2017-04-10 65 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);