如何从这个数组中获取类型

时间:2014-01-31 15:39:44

标签: php arrays

我有以下数组,我希望获得type和(如果有任何设置)amount值(默认数量应为1)。我该怎么做?

array(10)  { 

[0]=> array(1) { ["type"]=> string(3) "EMPTY" } 
[1]=> array(1) { ["type"]=> string(7) "BEER" } 
[2]=> array(2) { ["type"]=> string(8) "BEEF" ["amount"]=> int(3) } 
[3]=> array(1) { ["type"]=> string(3) "WOOD" } 
[4]=> array(1) { ["type"]=> string(3) "CHEESE" } 
[5]=> array(1) { ["type"]=> string(3) "EMPTY" } 
[6]=> array(1) { ["type"]=> string(3) "EMPTY" } 
[7]=> array(1) { ["type"]=> string(3) "EMPTY" } 
[8]=> array(1) { ["type"]=> string(3) "EMPTY" } 
[9]=> array(1) { ["type"]=> string(3) "EMPTY" } 

} 

编辑:嗯,我已经用foreach尝试了它,就像我之前做的那样..但是因为这不再是JSON我死了

foreach($json as $key => $moreJson)
{
    $json[$key] = json_decode($moreJson);
}

echo '<p> User data for Player is 1 ', $json['type'][3];

但是这给了我:

Warning: json_decode() expects parameter 1 to be string, array given in XX on line 19

1 个答案:

答案 0 :(得分:1)

你可以这样做

$new_array = array();
foreach($array as $item){
    if( !array_key_exists('amount',$item) ){
        $item['amount'] = 1;
    }
    $new_array[] = $item;
}

在没有花括号的情况下甚至更好,因为我们只在if语句中执行一行代码。

$new_array = array();
foreach($array as $item){
    if( !array_key_exists('amount',$item) )
        $item['amount'] = 1;
    $new_array[] = $item;
}

如果没有$ new_array和大括号,甚至会更好。你可以使用&amp;通过引用分配该数组值。

foreach($array as &$item)
    if( !array_key_exists('amount',$item) )
        $item['amount'] = 1;