PHP 从存储在 ASSOC 数组中的数组中获取值


php get value from array which stored in assoc array

示例:

$arraytest = array(
key => array("test"),
key2 => value2,
key3 => value3);
foreach ($arraytest as $key=>$val) {
echo $key. "=" .$val. "<br>";
}

结果:

key=Array
key2=value2
key3=value3

那么,如何获取存储在$arraytest[0]中的值?我需要在foreach中使用foreach才能获取

key=test
key2=value2
key3=value3

那么,我怎样才能获得存储在$arraytest[0]中的值呢?

只需使用 $arraytest[0] . 数组 $arraytest[0] 的值。 当你把它转换成一个字符串时,它只会说"数组"。

相反,如果您想迭代该数组,您已经知道如何做到这一点。

foreach ($arraytest[0] as $key => $val) {
  echo $key, '=', $val, '<br/>';
}

孩子也有数组,所以你不能直接回显它。按is_array()检查。例:

$arraytest = array(
    'key' => array("test"),
    'key2' => 'value2',
    'key3' => 'value3'
);
foreach ($arraytest as $key=>$val) {
    echo (is_array($val)) ? $key. "=" .$val[0]. "<br>" : $key. "=" .$val. "<br>";
}

输出:

key=test
key2=value2
key3=value3

解决方案可以是检查项目是否为数组,遍历它

foreach ($arraytest as $key=>$val) {
    if ( is_array(@val))
    {
        foreach ($val as $k =>$v) {
          echo $k. "=" .$v. "<br>";
        }
    }
    else
        echo $key. "=" .$val. "<br>";
}

但这只进入内部一个级别,您可以使用递归算法进入内部不可预测的级别数量

下面是遍历任何数组并打印其值的递归函数:

function valuePrint($mixed, $keyStr = '')
{
    if(is_array($mixed)) {
        foreach ($mixed as $key => $value) {
            valuePrint($value, $keyStr . $key . '=>');  // Recursive call
        }
    } else {
        echo $keyStr . $mixed . "'n"; // For html output use '<br/>' instead of "'n"
    }
}

调用函数的示例:

$arraytest = array(
    'key'  => array('test'),
    'key2' => 'value2',
    'key3' => 'value3',
);
valuePrint($arraytest);

调用的结果将是:

key=>0=>test
key2=>value2
key3=>value3

还会显示内部数组的键0,因为它也是一个键。我更喜欢=>而不是=输出。