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