2015-11-22 22 views
0

这是一些php代码。 0显式地在关联数组中找到。如果我试图把它放在另一个,它不会被分配。我知道如何解决这个问题的唯一方法是使用===明确检查它是否为0。这是唯一的方法吗?如果它在php中的assocc中,则不能将0赋值给数组。

<?php 
     $vars['one'] = '31234'; 
     $vars['two'] = 'sldf'; 
     $vars['three'] = 1 - 1; 
     $return_array = []; 
     foreach ($vars as $key => $value){ 
      echo "---------------Just value<br>"; 
      var_dump($value); 
      echo "<br>"; 
      $value != '' ? ($return_array[$key] = $value) : null; 
      echo "---------------array of key<br>"; 
      var_dump($return_array[$key]); 
      echo "<br>"; 
     } 
?> 

我得到这个好东西回来。

---------------Just value 
string(5) "31234" 
---------------array of key 
string(5) "31234" 
---------------Just value 
string(4) "sldf" 
---------------array of key 
string(4) "sldf" 
---------------Just value 
int(0) 
---------------array of key 
NULL 

围绕这个比围绕if ($key === 0) { // stuff }更好吗?

+0

你到底想要达到什么目的? “0明确地在关联数组中找到。” < - 这句话应该是什么意思? – Jan

回答

1

在做$value != ''时,您正在使用“宽松比较”。这也评估为0。请参阅表格以获得宽松比较here

如果您使用$value !== ''来替代,它会将0插入到数组中。