[英]PHP :Printing Associative Array with nested array
我有一个包含关联数组的多维数组,在关联数组中,我有一个名为'opt'的键,它包含一个数组。 我遍历了整个多维数组。 我想使其更加简化,并且摆脱 检查键是否为'opt'的原因,因为如果我有更多包含数组的键,那么我必须对包含数组的所有键进行检查。想以更具技术性的方式做。 简而言之,如何在遍历数组时检查$ value包含数组。
$myArr=array(
array(
'question' => 'First Question',
'opt' => array('A','B','c','D'),
'ans' => '3'
),
array(
'question' => 'Second Question',
'opt' => array('A','B','c','D'),
'ans' => '1'
)
);
for($i=0; $i<count($myArr); $i++)
{
foreach ($myArr[$i] as $key => $value) {
if ($key!='opt') {
echo $value . "<br/>";
}
else{
for($ii=0; $ii<count($value); $ii++)
{
echo $value[$ii] . "<br />";
}
}
}
}
您可以使用递归函数并使用foreach
显示任何内容,如下所示:
function display_array($arr){
if(gettype($arr) == 'array'){
foreach($arr as $v){
display_array($v);
}
}else{
echo $arr . '<br>';
}
}
这样称呼它:
display_array($myArr);
输出与您的代码相同。 在这里查看 。
根据您所需的输出,以一种良好的格式化方式“打印”此数组的最简单方法是:
echo "<pre>";
print_r($arr);
echo "</pre>";
这可能无法为用户提供演示,但是如果只是您自己“查看”结果,那就很好了。
您可以使用以下类轻松打印嵌套数组。 它以递归方式运行,因此无论有多少嵌套数组,有多少层都无关紧要。
<?php
class Debug
{
public static function errorLog($text)
{
$lines = Debug::arrayToTextLines($text);
foreach ($lines as $value) {
error_log($value);
}
}
public static function echo($text)
{
$lines = Debug::arrayToTextLines($text);
foreach ($lines as $value) {
echo $value;
}
}
public static function arrayToTextLines($array, $nestLevel = 0)
{
$resultLines = array();
$margin = "";
for ($i = 0; $i < $nestLevel; $i++) {
$margin = " " . $margin;
}
if (gettype($array) == 'array') {
foreach ($array as $key => $value) {
$subValues = Debug::arrayToTextLines($value, $nestLevel + 1);
if (count($subValues) > 1) {
$resultLines[] = $margin . $key . " => ";
$resultLines = array_merge($resultLines, $subValues);
} else {
$resultLines[] = $margin . $key . " => " . $value;
}
}
} else {
$resultLines[] = $margin . $array;
}
return $resultLines;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.