我的关联数组使用函数填充。它的第一个元素键为空,我需要为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',
)
);
请帮助我解决这个问题
答案 0 :(得分:0)
发现错误:函数$i
在第一个实例中为空
答案 1 :(得分:0)
这是因为您没有在循环之前定义$i
,而是在第一次使用$ i ++调用时定义了它自己。正如一个活着要死的家伙所提到的,如果只希望它们从0开始并进行迭代,则无需设置数组的键。我只需要定义数组并使用array_push()将行放入其中即可。
答案 2 :(得分:0)
您有2个选项:
首先就像上面的@AliveToDie一样,您不需要使用
$i
适用于这种情况。您可以使用$output[] = $row;
第二个是,如果出于您的原因需要使用$i
,则需要
在外部定义$i = 0
if($limit) {..}
条件