【问题标题】:Array_push 2d arrayArray_push 二维数组
【发布时间】:2023-03-26 03:40:01
【问题描述】:

我在运行 php.ini 时遇到了这个 array_push 问题。 echo 打印了 3 次,但我的阵列没有被推送 3 次,但只有一次。 我的输入:从 Php 数据库 ID 读取并占用。例如。 ID = A1 占用 = 1 或 0(任一) 我想要的输出:二维数组
例如:回声 $seats[0][1] = 1 $seats = array(array("A", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

他们向我展示的错误是“未定义的偏移量”。 这是我的代码:

$sql = "SELECT ID,Occupied FROM booking";
    $result = mysqli_query($connection, $sql);
    $seatrow = array();
    if ($result->num_rows > 0) {
        $rowA = array("A");
        while ($row = $result->fetch_assoc()) {
            echo "<br> id: " . $row["ID"] . " Seated? " . $row["Occupied"] . "<br>";
            if (strpos($row["ID"], 'A') !== False) {
                array_push($rowA,$row["Occupied"]);
                array_push($seatrow,$rowA);
                echo $seatrow[0][2];

            }
        }
            }

【问题讨论】:

  • 表示strpos($row["ID"], 'A') === False
  • 是否显示第二个回显:echo $seatrow[0][2];
  • 不,只有 [0][1] 和 [0][0]
  • @AbraCadaver 不是那一行,我试过了
  • 您的代码完全没有意义,您正在循环修改 $rowA 并再次将其推送到 $seatrow 中,这意味着它会无缘无故地继续增长,请提供输入和预期的输出数据,以便我们知道您要完成的工作。

标签: php html sql database array-push


【解决方案1】:
$Result = array();
while ($row = $result->fetch_assoc()) {
    if (strpos($row["ID"], 'A') !== false) {
        $Result['A'][] = $row["Occupied"];
    }elseif(strpos($row["ID"], 'B') !== false) {
        $Result['B'][] = $row["Occupied"];      
    }   
}
var_dump($Result);

这应该返回你想要的,同时使用 'A' OR 'B' 作为数组的键以便于访问。 所以如果你想检查'A'你只会foreach ($Result['A'] as $Occupied)

当然,您可以执行foreach ($Result as $Group =&gt; $Occupations) 之类的操作,然后您可以在其中使用foreach ($Occupations as $Occupied) 来获取列表中每个项目的状态。

【讨论】:

  • 您可以像这样$SeatsAvailableInGroupA = in_array('0', $Results['A']) 在“A”组中检查 $Seats,当您有没有占用的东西时应该返回 TRUE,或者当所有值为 1 时返回 FALSE。
猜你喜欢
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 2017-03-02
  • 2011-08-13
  • 1970-01-01
  • 2020-10-08
相关资源
最近更新 更多