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进行检查您回答了自己的问题问题“橡皮鸭”的一个很好的例子;您还删除了[],我认为这可能是您的问题。您回答了自己的问题。“橡皮鸭”的一个很好的例子;您还删除了[],我认为这可能是您的问题。