从key =>创建新的assoc数组其他数组的值

时间:2011-01-31 20:05:53

标签: php associative-array

object(stdClass)#25 (7) {
    ["store_id"]=>
        string(2) "27"
    ["account_id"]=>
        string(1) "5"
    ["store_date_created"]=>
        string(19) "2011-01-31 02:40:38"
    ["options"]=>
        array(2) {
          [0]=>
            array(2) {
                ["key"]=>
                  string(5) "state"
                ["value"]=>
                  string(2) "FL"
        }
          [1]=>
            array(2) {
                ["key"]=>
                  string(7) "zipcode"
                ["value"]=>
                  string(5) "12343"
        }
   }
}

我有一个Store的对象结构,它的一个属性是一个assoc。选项数组(从数据库中提取)。可以有零到多个选项,但key始终是唯一的。我需要一种方法来获取options assoc。数组并把它变成这样的东西:

["options"]=>
    array(1) {
      ["state"] => "FL",
      ["zipcode"] => "12343"
    }

不知道我的语法对于我想要的结果是否正确但我基本上想要这样做:

echo $store_obj->options['state']

2 个答案:

答案 0 :(得分:4)

假设选项位于$object->options

$newOptions = array();    
array_walk($object->options, function($opt) use (&$newOptions) {
   list($key, $value) = $opt;
   $newOptions[$key] = $value;    
});
$object->options = $newOptions //reasing filtered options to options property

注意:当使用该表单中的代码时,需要PHP 5.3。

答案 1 :(得分:3)

假设该对象名为$store_obj

$store = array();
foreach($store->options as $opt){
  $store_obj[$opt['key']] = $opt['value'];
}
$store_obj->options = $store;

现在你应该可以echo $store_obj->options['state']