How can i test a var if its empty or not? i have this array
array($myname,$myhouse,$mywife);
Nasıl her biri kontrol edebilirsiniz eğer boş veya değil without using a loop?
(Tabii fonksiyonu hariç) bir satır:
function not_empty($val) {
return !empty($val);
}
$result = array_product(array_map('not_empty',$array));
The result is 0
if one variable is empty otherwise 1
.
But of course it won't tell which one is empty. ;)
Bkz array_map, array_product.
Eğer bir döngü yazmadan demek, o zaman kullanabilirsiniz:
in_array(true, array_map(create_function('$x', 'return empty($x);'),$array));
Örtülü iki kez aslında, dizi boyunca ders döngü olacak! Boşluk kontrol için bir kez, sonra tekrar sonucu kontrol etmek. Eğer bir non_empty değer vurduğunuzda size zarar verebilir bir döngü ile daha iyi konum.
$myvars = array($myname, $myhouse, $mywife);
foreach ($myvars as $value) {
if (empty($value)) {
// value is empty
}
}
edit: İşte bir döngü kullanabilirsiniz olmayan bir versiyonu:
$myvars = array($myname, $myhouse, $mywife);
$myvars_filtered = array_filter($myvars, "empty"); // or isset, if you prefer
if (count($myvars_filtered) > 0) {
// one or more values were empty
}
Felix yorumladı yerine yok olanlar, "isset"
yerine "empty"
, bir değere sahip tüm değerleri alacak kullandığınızda, unutmayın. Yani bu durumda $myvars_filtered
öğelerin saymak için $myvars
öğelerin miktarını karşılaştırmak gerekir.
Try isset()
Edit- Use the code posted above, but change the function:
$myvars = array($myname, $myhouse, $mywife);
foreach ($myvars as $value) {
if (isset($value)) {
// Not set
}
}
Tabii bunu yapmak için yolu vardır. Bunlardan biri:
<?php
$array = array('myname' => 'Jakob', 'myhouse' => '', 'mywife' => 1);
$empty_elements = array("");
$array = array_keys(array_intersect($array,$empty_elements));
var_dump($array);
?>
çıkışlar:
array 0 => string 'myhouse'
(Boş olanları çıkarmadan) bir benzer sorun için bazı diğer olasılıklar: http://hasin.wordpress.com/2009/09/16/removing-empty-elements-from-an-array-the-php-way/