2015-02-06 105 views
-2

我檢查數組值空或不喜歡以下內容:查找空數組的索引功能

長格式:

$empty = array(); 
foreach($array as $value) 
    if(empty($value)) $empty[] = $value; 

預期的功能:

$empty = array_empty_values($array); 

有沒有像array_empty_values()任何功能找到空的數組索引?

回答

1

使用array_filter PHP的內置功能

function filter_empty($var) { 
    return empty($var); 
} 

$result_array = array_filter($your_array, "filter_empty"); 

$your_array = array(1,'2','3',false,''); 
$result_array = array_filter($your_array, "filter_empty"); 
echo print_r($result_array, true); 

將打印

Array 
(
    [3] => 
    [4] => 
) 

如果您只需要索引可以使用array_keys內置函數

echo print_r(array_keys($result_array), true); 

,將打印

Array 
(
    [0] => 3 
    [1] => 4 
) 
+0

@ Rizier123:沒有,是相反的:) – DonCallisto 2015-02-06 09:17:34

+0

對不起,剛剛看到它:D(順便說一句:這個工作也是:'$ result_array = array_diff($ arr,array_filter($ arr));')那麼OP不必編寫額外的功能 – Rizier123 2015-02-06 09:18:58

+0

@ Rizier123:是的,這是一個有效的替代 – DonCallisto 2015-02-06 09:20:21

0

您需要用數組中的鍵,不與價值觀。因爲這些值是空的。

/** 
* Get keys of empty array values 
* @param array $array The array to check. 
* @return array The keys of the empty values. 
*/ 
array_empty_values($array) { 
    $empty = array(); 
    foreach($array as $key => $value) { 
     if(empty($value)) { 
      $empty[] = $key; 
     } 
    } 
    return $empty; 
} 
2

如果要檢查和去除空數組元素可以用PHP檢查此功能array_filter()

array_filter接受一個數組作爲輸入,並刪除其是等於空/ 0的所有元素/ flase

+0

啊,只是讀了這個問題,答案是:OP不想刪除他想要的數組中的空值 – Rizier123 2015-02-06 09:21:28

+0

糟糕!我的壞:對不起。那麼我們可以使用'$ result_array = array_diff($ input,array_filter($ input));'這個片段來得到他想要得到的結果。 – 2015-02-06 09:25:46