Monday, 27 August 2018

PHP: concatenation of multidimensional array elements


I want to concatenate one element of a multidimensional array with some strings.


<?
$string1 = 'dog';
$string2 = array
           (
            'farm' => array('big'=>'cow', 'small'=>'duck'),
            'jungle' => array('big'=>'bear', 'small'=>'fox')
           );
$string3 = 'cat';
$type = 'farm';
$size = 'big';
$string = "$string1 $string2[$type][$size] $string3";
echo($string);
?>

By using this syntax for $string, I get:
dog Array[big] cat
I would like not to use the alternate syntax
$string = $string1 . ' ' . $string2[$type][$size] . ' ' . $string3;

which works.
What's wrong with "$string1 $string2[$type][$size] $string3"?

Use the "complex syntax":
$string = "$string1 {$string2[$type][$size]} $string3";

PHP's variable parsing is quite simple. It will recognize one level array access, but not more level. By enclosing the expression in {} you explicitly state which part of the string is a variable.

0 comments:

Post a Comment