2015-11-22 18 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插入到數組中。