PHP多维数组被嵌套两次

PHP多维数组被嵌套两次,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我使用这个函数从数据库中获取数据 public function getModelSpecs($modelCode) { $modelSpecs = db::fetch_array("SELECT * FROM `product_specs` WHERE model='{$modelCode}'"); return $modelSpecs; } 我使用基于前一项计数的for循环进行访问 for ($i = 0; $i < count($model); $i++) {

我使用这个函数从数据库中获取数据

public function getModelSpecs($modelCode) {
    $modelSpecs = db::fetch_array("SELECT * FROM `product_specs` WHERE model='{$modelCode}'");

    return $modelSpecs;
}
我使用基于前一项计数的for循环进行访问

for ($i = 0; $i < count($model); $i++) {
    $modelSpecs[] = $product->getModelSpecs($model[$i]['code']);
    $count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";
这就是它的结构,因为我已经在函数中获取数组了,还是我不能使它只下降一级,就像这样:

public function getModelSpecs($modelCode) {
    $modelSpecs = db::fetch_row("SELECT * FROM `product_specs` WHERE model='{$modelCode}'");

    return $modelSpecs;
}

谢谢

为了更新所有人,我使用fetch_row解决了这个问题,因此每次它都会获取一个新行,然后将其存储到数组中

$modelSpecs[] = $product->getModelSpecs($model[$i]['code']);

为了更新每个人,我已经通过使用fetch_row修复了这个问题,因此每次它都会获取一个新行,然后将其存储到数组中

$modelSpecs[] = $product->getModelSpecs($model[$i]['code']);
我想这条线

$modelSpecs = $product->getModelSpecs($model[$i]['code']);
应该是

for ($i = 0; $i < count($model); $i++) {
    $modelSpecs[] = reset($product->getModelSpecs($model[$i]['code']));
    $count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";
否则,您将结果集分配给$modelSpecs数组的一个元素,而我认为您正试图将$modelSpecs分配给整个结果集。

我认为行

$modelSpecs = $product->getModelSpecs($model[$i]['code']);
应该是

for ($i = 0; $i < count($model); $i++) {
    $modelSpecs[] = reset($product->getModelSpecs($model[$i]['code']));
    $count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";

否则,您将把结果集分配给$modelSpecs数组的一个元素,而我认为您正试图将$modelSpecs分配给整个结果集。

fetch\u数组返回一个条目数组

所以就像

[0]=条目1 [1] =条目2 等 因此,如果您只想要第一个条目,您需要对其进行重置以获得第一个条目。下面是应该可以工作的更新代码

for ($i = 0; $i < count($model); $i++) {
    $myModelSpec=$product->getModelSpecs($model[$i]['code']);
    //goes to the next item if this last item isn't an array.
    if(!is_array($myModelSpec)) continue;
    $modelSpecs[] = reset($myModelSpec);
    $count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";
如果该函数由于某种原因在查询未找到任何内容时未返回数组,则会导致错误,因此您可能希望改为执行此操作


fetch_数组返回一个条目数组

所以就像

[0]=条目1 [1] =条目2 等 因此,如果您只想要第一个条目,您需要对其进行重置以获得第一个条目。下面是应该可以工作的更新代码

for ($i = 0; $i < count($model); $i++) {
    $myModelSpec=$product->getModelSpecs($model[$i]['code']);
    //goes to the next item if this last item isn't an array.
    if(!is_array($myModelSpec)) continue;
    $modelSpecs[] = reset($myModelSpec);
    $count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";
如果该函数由于某种原因在查询未找到任何内容时未返回数组,则会导致错误,因此您可能希望改为执行此操作


SQL fetch返回多维数组,然后将数组中的每个元素添加到新数组的每个元素中。通过打印$modelspec进行检查您的SQL fetch返回多维数组,然后将数组中的每个元素添加到新数组的每个元素中。通过打印$modelspec进行检查您回答了自己的问题问题“橡皮鸭”的一个很好的例子;您还删除了[],我认为这可能是您的问题。您回答了自己的问题。“橡皮鸭”的一个很好的例子;您还删除了[],我认为这可能是您的问题。