关联数组第一个元素不是从0开始

时间:2019-06-20 09:07:02

标签: php

我的关联数组使用函数填充。它的第一个元素键为空,我需要为0

$blocks= get_data_ordered('blocks', 'page_id', $page, '', 'sequence');

highlight_string("<?php\n\$blocks =\n" . var_export($blocks, true) . ";\n?>");


function get_data_ordered($table, $condition_field, $condition_value, $limit, $order) {
include 'conf/config.php';
include 'conf/opendb.php';

if (!$condition_field){
    $condition = "";
}
else{
    $condition = "WHERE `$condition_field`='$condition_value'";
}

if($limit){
    $limit_query="LIMIT $limit";
    $i=0;
}

  $result=mysqli_query($conn, "SELECT * FROM $table $condition ORDER BY $order ASC $limit_query");
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
    if($limit==1){
        return $row;
    }
    else{
        $output[$i] = $row;
        $i++;
    }
}
return $output;
include 'conf/closedb.php';
}

我的当前输出如下。第一个元素键为空而不是0

$blocks =
array (
  '' => 
  array (
    'id' => '2',
  ),
  1 => 
  array (
    'id' => '6',
  )
);

我需要的输出是从0开始而不是空白键

$blocks =
array (
  0 => 
  array (
    'id' => '2',
  ),
  1 => 
  array (
    'id' => '6',
  )
);

请帮助我解决这个问题

3 个答案:

答案 0 :(得分:0)

发现错误:函数$i在第一个实例中为空

答案 1 :(得分:0)

这是因为您没有在循环之前定义$i,而是在第一次使用$ i ++调用时定义了它自己。正如一个活着要死的家伙所提到的,如果只希望它们从0开始并进行迭代,则无需设置数组的键。我只需要定义数组并使用array_push()将行放入其中即可。

答案 2 :(得分:0)

您有2个选项:

  1. 首先就像上面的@AliveToDie一样,您不需要使用 $i适用于这种情况。您可以使用$output[] = $row;

  2. 第二个是,如果出于您的原因需要使用$i,则需要 在外部定义$i = 0 if($limit) {..}条件