2017-05-17 57 views
0

我试图回显一个数组,但我得到错误,我无法弄清楚。 试图sereval办法改变的代码,我想我最好的输出到目前为止是:高级多维度难度

$b = array(
    array("number 1", array(0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 2", array(1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1)), 
    array("number 3", array(0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1)), 
    array("number 4", array(1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 5", array(0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0)), 
    array("number 6", array(0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 7", array(1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1)), 
    array("number 8", array(0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)), 
    array("number 9", array(0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1)), 
); 

for ($row=0; $row < count($b); $row++) { 
    echo "<p><b>Answer : </b>".$b[$row][0]."</p>"; 
    for ($col=0; $col < 30; $col++) { 
     echo "<p>".$b[$row][$col]."</p></br>"; 
    } 
} 

这给了我下面的错误:

number 1 number 1 Notice: Array to string conversion in C:\xampp\htdocs\vendoTest\test.php on line 62 Array Notice: Undefined offset: 2 in C:\xampp\htdocs\vendoTest\test.php on line 62

谁能帮助我解决这个问题?

+0

你得到什么错误?你的预期输出是什么? – FrankerZ

+1

'$ col rickdenhaan

+0

答案:数1 数1 通知:Array对字符串的转换在C:\ XAMPP \ htdocs中\ vendoTest \ test.php的在线路62上 阵列 注意:未定义偏移:2在C:\ XAMPP \ htdocs \ vendoTest \ test.php on line 62 – tryAnroid

回答

1
<?php 

$b = array(
    array("number 1", array(0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 2", array(1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1)), 
    array("number 3", array(0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1)), 
    array("number 4", array(1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 5", array(0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0)), 
    array("number 6", array(0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0)), 
    array("number 7", array(1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1)), 
    array("number 8", array(0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)), 
    array("number 9", array(0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1)), 
); 

foreach ($b as $answers) 
{ 
    echo "<p><b>Answer : </b>".$answers[0]."</p>"; 
    foreach ($answers[1] as $val) 
    { 
     echo "<p>".$val."</p></br>"; 
    } 
} 

我相信这是你想要的。输出为this操场。

与您的代码的主要问题,从该行茎:

echo "<p>".$b[$row][$col]."</p></br>"; 

$b[$row]一个例子是这样的:

array("number 1", array(0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0)) 

指数0是答案,而且指数1是实际的数组0和1。所以如果你想循环第二个数组,你需要使用$b[$row][1][$col]

您的固定代码:

for ($row=0; $row < count($b); $row++) { 
    echo "<p><b>Answer : </b>".$b[$row][0]."</p>"; 
    for ($col=0; $col < 30; $col++) { 
     echo "<p>".$b[$row][1][$col]."</p></br>"; 
    } 
} 
+0

就是这样!非常感谢@FrankerZ。小心解释我做错了什么? – tryAnroid

+0

@tryAnroid我更新了我的答案 – FrankerZ

+0

@tryAnroid另外,请查看[this playground](https://www.tehplayground.com/xScifId6CHXIzpmS)。您应该将答案用作关键字,并将值作为每个项目的值。这将是一个更容易处理数组的方法。 – FrankerZ