我正在使用此功能从数据库中获取数据。
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>";
这一切都有效,但为什么它像这样嵌套我的数组,就像它的两个层次一样。
Array
(
[0] => Array
(
[0] => Array
(
[id] => 183
[model] => ZS125-48A
[engine_brand] => 158FMI-B
)
)
[1] => Array
(
[0] => Array
(
[id] => 172
[model] => STR125YB
[engine_brand] => K154FMI
)
)
这只是它的结构,因为我已经在函数中获取数组,或者我不能这样做,所以它只是在这样一个级别:
Array
(
[0] => Array
(
[id] => 183
[model] => ZS125-48A
[engine_brand] => 158FMI-B
)
[1] => Array
(
[id] => 172
[model] => STR125YB
[engine_brand] => K154FMI
)
由于
答案 0 :(得分:6)
我认为该行
$modelSpecs[] = $product->getModelSpecs($model[$i]['code']);
应该只是
$modelSpecs = $product->getModelSpecs($model[$i]['code']);
否则,您将结果集分配给$ modelSpecs数组的元素,而我认为您正在尝试将$ modelSpecs分配给整个结果集。
答案 1 :(得分:0)
只是为了更新每个人我已经使用fetch_row解决了问题,所以每次都会获取一个新行,然后将其存储到数组中。
public function getModelSpecs($modelCode) {
$modelSpecs = db::fetch_row("SELECT * FROM `product_specs` WHERE model='{$modelCode}'");
return $modelSpecs;
}
答案 2 :(得分:-1)
fetch_array返回一个条目数组。
所以就像
因此,如果您只想要第一个条目,则需要对其执行重置()以获取第一个条目。这是应该有效的更新代码......
for ($i = 0; $i < count($model); $i++) {
$modelSpecs[] = reset($product->getModelSpecs($model[$i]['code']));
$count++;
}
echo "<pre>".print_r($modelSpecs, true)."</pre>";
如果该函数由于某种原因没有返回数组,则会导致错误(如果查询没有找到任何内容,那么您可能希望这样做。
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>";