1

我想将方括号字符串存储在一个变量中,以便我可以使用该变量来获取数组的值。我怎样才能做到这一点?

例子:

$vehicle = array("car"=>"volvo","bike"=>"polygon");

$bracket1="['car']";

$bracket2="['bike']";

echo $vehicle.$bracket1;//my expected result = 'volvo';

echo $vehicle.$bracket2;//my expected result = 'polygon';

案例假设我有这个数据

$data = array(
"vehicles"=>array(
    array(
        "name"=>"volvo",
        "manufacturer"=>"abc",
        "color"=>array("blue"=>"wonderful","red"=>"fantastic")),
    array(
        "name"=>"toyota",
        "manufacturer"=>"def",
        "color"=>array("blue"=>"awesome","red"=>"good")),
    array(
        "name"=>"mecedes",
        "manufacturer"=>"ghi",
        "color"=>array("blue"=>"nice","red"=>"great","green"=>"good","brown"=>"elegant")),
));

$fields  = array(
    "$data['vehicles']['name']",
    "$data['vehicles']['manufacturer']",
    "$data['vehicles']['color']['blue']",
    "$data['vehicles']['color']['red']"
);

//a function to print those data according to user parameter($fields, it may uncertain pattern)

function get_data($data,$fields){
    for($c=0;$c<count($data);$c++){
        foreach($fields as $field){     //field to show
            echo $field;
        }
    }
}

编辑:

$data = array(
"vehicles"=>array(
    array(
        "name"=>"volvo",
        "manufacturer"=>"abc",
        "color"=>array("blue"=>"wonderful","red"=>"fantastic")),
    array(
        "name"=>"toyota",
        "manufacturer"=>"def",
        "color"=>array("blue"=>"awesome","red"=>"good")),
    array(
        "name"=>"mecedes",
        "manufacturer"=>"ghi",
        "color"=>array("blue"=>"nice","red"=>"great","green"=>"good","brown"=>"elegant")),
));

$c=0;

$fields  = array( // note added zeros here... these are your "vehicle" array key

    "{$data['vehicles'][$c]['name']}",

    "{$data['vehicles'][$c]['manufacturer']}",

    "{$data['vehicles'][$c]['color']['blue']}",

    "{$data['vehicles'][$c]['color']['red']}"

);


for($c=0;$c<count($data['vehicles']);$c++){

    foreach($fields as $field) {

        echo $field . PHP_EOL;

    }

}

//the output print : volvo abc wonderful fantastic volvo abc wonderful fantastic volvo abc wonderful fantastic 

//the output expectetd : volvo abc wonderful fantastic toyota dev awesome good mercedes ghi nice great 
4

1 回答 1

5

你为什么不试试这个:

$vehicle = array("car" => "volvo", "bike" => "polygon");

$bracket1 = "car";

$bracket2 = "bike";

echo $vehicle[$bracket1]; //my expected result = 'volvo';

echo $vehicle[$bracket2]; //my expected result = 'polygon';

编辑:你想要一个这样做的功能......你不需要它。这是一个基本的 PHP 语言结构。

Anywho,这是你的函数(将基本的 PHP 语言结构包装在一个额外的层中)——我什至会进行基本的错误检查(如果数组键不存在则返回 false):

function searchMyHugeArrayForSomething($huge_array, $something) {
    if(!array_key_exists($something, $huge_array))
        return false; // return false if array key doesn't exist
    return $huge_array[$something]; // return your desired result......
}

演示:

$my_huge_array = array(
    'pet' => 'cat',
    'wife' => 'sarah',
    'brother' => 'john'
    // etc
);

echo searchMyHugeArrayForSomething($my_huge_array, 'wife'); // sarah
echo searchMyHugeArrayForSomething($my_huge_array, 'husband'); // returns false (oop, sexist!)
echo searchMyHugeArrayForSomething($my_huge_array, 'brother'); // john
// etc............?

说得通?

编辑:好的,多维数组非常不同(你原来的问题是平的)。您在这里遇到问题,因为您缺少介于vehiclesandname等之间的级别。那里有一个包含数字索引的数组,因此您的路径实际上$data['vehicles'][0]['name']-在这种情况下,您基本上可以只echo将数组的每一行获取解析为字符串的数组键的值。

在这个例子中,我在每一行都添加了大括号以解析为变量 variable,并且因为您的示例实际上不会按原样运行(它试图将数组键解析为变量并且在语法上失败),并添加零数组键。您需要自己确定要定位的数组键,这只是使用第一个:

$fields  = array( // note added zeros here... these are your "vehicle" array key
    "{$data['vehicles'][0]['name']}",
    "{$data['vehicles'][0]['manufacturer']}",
    "{$data['vehicles'][0]['color']['blue']}",
    "{$data['vehicles'][0]['color']['red']}"
);

foreach($fields as $field) {
    echo $field . PHP_EOL;
}

输出:

volvo
abc
wonderful
fantastic
于 2014-02-07T01:30:44.537 回答