2017-04-10 66 views
-1

我是一名PHP初學者,並且遇到以下問題,我完全被卡住了。我有一個數組以這種格式從數組中刪除所有值=> 0並將其逆轉

Array (
    [date] => 0 
    [author] => 1 
    [categories] => 1 
    [tags] => 0 
    [comments] => 0 
    [readmore] => 0 
) 

現在我需要刪除的[value] => 0從陣列中的所有項目,並得到它以這種格式

Array (
    [0] => author 
    [1] => categories 
) 

在此的任何輸入是非常讚賞。

+0

'$ array_without_zero = array_unique($陣列)' –

+0

評論: - http://stackoverflow.com/a/43320034/ 2667307 –

回答

1

使用array_filter然後array_keys

$array = array ('date' => 0, 'author' => 1, 'categories' => 1, 'tags' => 0, 'comments' => 0, 'readmore' => 0); 
$array = array_filter($array); 
print_r(array_keys($array)); 

輸出

Array 
(
    [0] => author 
    [1] => categories 
) 
+2

這個作品很有魅力,非常感謝! – savethegold

0

你可以嘗試這樣的事情:

foreach($array as $item){ 
if($item == "0"){ 
    unset($item); 
} 
} 

或者做一些修改,使用未設定功能。

0

這也是做的工作......

$dataSource = array('data' => 0, 
     'author' => 1, 
     'categories' => 1, 
     'tags' => 0, 
     'comments' => 0, 
     'readmore' => 0, 
    ); 

$updatedDataList = array(); 
foreach ($dataSource as $key => $value) { 
    if($value !== 0) { 
     $updatedDataList[] = $key; 
    } 
} 

print_r($updatedDataList); 
1

有一個叫array_search()輸出功能那裏。假設唯一可能的值01,你可以檢索算法整個數組此值:

$array = [ 
    'date' => 0, 
    'author' => 1, 
    'categories' => 1, 
    'tags' => 0, 
    'comments' => 0, 
    'readmore' => 0 
]; 
$new_array = array_flip(array_search(1, $array)); 

所以print_r($new_array)會給你想要的結果。

+0

你的代碼有語法錯誤,如果thord參數沒有被使用,array srarch也會返回鍵值。所以如果array_flip會給參數所要求的錯誤,現在應該修正數組 –

+0

,忘記了逗號。 –

+0

看看https://3v4l.org/Jm8tN –

0

你可以試試下面的代碼

$yourArray = Array ("date" => 0,"author" => 1, "categories" => 1,"tags" => 0, "comments" => 0,"readmore" => 0); 
$removeZeroFromArray = array(0); 
$desiredResult = array_diff($yourArray, $removeZeroFromArray);       
echo"<pre>"; 
print_r(array_keys($desiredResult)); 
echo"</pre>"; 

輸出會像

Array 
(
    [0] => author 
    [1] => categories 
) 

替代的方法應該是

$desiredResult = array_filter($yourArray, function($a) { return ($a !== 0); }); 

希望它能幫助!

+1

替代方式,很好用!+1只需一條線 – savethegold

+0

請接受&upvote如果有任何幫助! :) –

0

@savethegold您可以保存您的金象下面這樣:d

<?php 
    $Array1 = array("date" => 0, "author" => 1, "categories" => 1, "tags" => 0, "comments" => 0, "readmore" => 0); 
    foreach ($Array1 as $key => $value) { 
     if($value == 0){ 
      unset($Array1[$key]); 
     } 
    } 
    $finalArr = array_keys($Array1); 
    print_r($finalArr); 
0
<?php 
$array = array ('date' => 0, 'author' => 1, 'categories' => 1, 'tags' => 0, 'comments' => 0, 'readmore' => 0); 
$resutl = []; 
foreach($array as $k => $v) 
{ 
    if($v != 0) 
    $result[] = $k; 
} 
print_r($result);