2015-09-07 69 views
-1

我有一個關聯數組是這樣的:PHP如何在關聯數組中填充默認值?

$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2); 

當我打印$列表的價值,我得到如下:

Array ([key1] => 3 
     [key2] => 5 
     [0] => key3 
     [key4] => 2) 

什麼是檢查的最佳方式,在每一個關鍵數組已經填充了一個整數,如果它還沒有一個值,那麼它的默認值是1?

所以對於檢查後,上面的陣列最終的結果應該是:

Array ([key1] => 3 
     [key2] => 5 
     [key3] => 1 
     [key4] => 2) 
+1

你可以遍歷,並檢查該值是數字,如果不加1 ..看看[這] (http://mattgemmell.com/what-have-you-tried/) – Naruto

+1

你嘗試過什麼嗎? – Rizier123

+0

'檢查數組中的每個鍵是否都被一個整數填充了'這一行應該是'檢查數組中的每個值是否已經被一個整數填充' – Viral

回答

0
$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2); 

    foreach($list as $k => $v) { 
     if(!is_int($v)) { 
      unset($list[$k]); 
      $list[$v] = 1; 
     } 
    } 

    ksort($list); 

    print_r($list); 
+0

如果你編輯它以包含一些解釋,你的答案會更有用。 – Blackwood

0

布爾檢查,如果陣列的所有值都是整數

$is_all_integer = array_filter($list, function($v){return is_int($v);}) === $list; 

如果不是所有的值都整數,則設置默認值1

if(!$is_all_integer) 
    $list = array_map(function(&$v){return is_int($v) ? $v : 1;}, $list); 
0

試試這個

<?php 

$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2); 

foreach($list as $key=> $value) 
{ 
    if(is_numeric($key)) 
    { 
     unset($list[$key]); 
     $list[$value] = 1; 
    } 

} 

ksort($list); 
echo "<pre>"; 
print_r($list); 

,如果你需要再例如參考鏈接https://ideone.com/n2ihA0