說這是我的字符串如何使用字符串從多維數組中獲取值?
$string = 'product[0][1][0]';
我怎麼能使用該字符串單獨真正得到從數組值,好像我用了這一點:
echo $array['product'][0][1][0]
我已經與preg_match_all好惹的與此正則表達式(/\[([0-9]+)\]/
),但我無法想出令人滿意的東西。
任何想法?提前致謝。
說這是我的字符串如何使用字符串從多維數組中獲取值?
$string = 'product[0][1][0]';
我怎麼能使用該字符串單獨真正得到從數組值,好像我用了這一點:
echo $array['product'][0][1][0]
我已經與preg_match_all好惹的與此正則表達式(/\[([0-9]+)\]/
),但我無法想出令人滿意的東西。
任何想法?提前致謝。
您可以使用preg_split
來獲取單個數組索引,然後循環逐個應用這些索引。這裏有一個例子,它使用粗糙的/[][]+/
正則表達式將字符串分開,無論它找到一個或多個方括號。
(閱讀[][]
結構爲[\]\[]
,即匹配左右括號字符類。反斜線是可選的。)
function getvalue($array, $string)
{
$indices = preg_split('/[][]+/', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach ($indices as $index)
$array = $array[$index];
return $array;
}
這是prettttty哈克,但這會工作。不知道你的數組結構會發生怎樣的變化,如果變得太動態,這將不起作用。
$array = array();
$array['product'][0][1][0] = "lol";
$string = 'product[0][1][0]';
$firstBrace = strpos($string, "[");
$arrayExp = substr($string, $firstBrace);
$key = substr($string, 0, $firstBrace);
echo $arrayExp, "<br>";
echo $key, "<br>";
$exec = "\$val = \$array['".$key."']".$arrayExp.";";
eval($exec);
echo $val;
怎麼樣使用eval()?
<?php
$product[0][1][0] = "test";
eval ("\$string = \$product[0][1][0];");
echo $string . "\n";
die();
?>