【问题标题】:Advanced multidimensonal difficulty高级多维难度
【发布时间】:2017-05-17 21:39:24
【问题描述】:

我正在尝试回显一个数组,但我遇到了我无法弄清楚的错误。 尝试了多种方法来更改代码,我认为到目前为止我最好的输出是:

$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 注意:第 62 行 C:\xampp\htdocs\vendoTest\test.php 中的数组到字符串转换 数组注意:未定义的偏移量:C:\xampp\htdocs\vendoTest\test.php 中的 2第 62 行

谁能帮我解决这个问题?

【问题讨论】:

  • 您遇到什么错误?你的预期输出是什么?
  • $col &lt; count($a) -- $a 突然从哪里来的?我猜你收到了undefined variable 错误?
  • 答案:数字 1 数字 1 注意:C:\xampp\htdocs\vendoTest\test.php 中第 62 行的数组到字符串转换 数组注意:未定义的偏移量:C:\xampp\htdocs 中的 2 \vendoTest\test.php 第 62 行
  • 对不起,我的错误,将其编辑为 30 而不是 count($a) @rickdenhaan

标签: php arrays


【解决方案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>";
    }
}

我相信这就是你想要的。输出见thisplayground。

您的代码的主要问题源于这一行:

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>";
    }
}

【讨论】:

  • 就是这样!非常感谢@FrankerZ。愿意解释我做错了什么吗?
  • @tryAnroid 另外,请检查this playground。您应该只使用答案作为键,并将值作为每个项目的值。这将是处理数组的一种更简单的方法。
猜你喜欢
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多