foreach 循环之前的$categories
结果 -
array(2) { [0]=> string(1) "1" [1]=> string(1) "2"}
$categories
foreach 循环中的结果 -
string(1) "1"string(1) "1"string(1) "2"string(1) "2"
$sortOrder
foreach 循环之前的结果 -
array(4) { [0]=> string(2) "20" [1]=> string(2) "13" [2]=> string(0) "" [3]=> string(0) ""}
$sortOrder
foreach 循环中的结果 -
string(2) "20"string(2) "13"string(0) ""string(0) ""string(2) "20"string(2) "13"string(0) ""string(0) ""
为什么我在 foreach 中得到一次双倍值?
foreach($categories as $cat)
{
foreach($sortOrder as $sort)
{
if(strlen($sort)>0)
{
//$this->Ps_products_model->brand_by_category_insert($brand_name,$brand_id,$cat,$sort,$state);
}
}
}
$this->load->view('admin/ajax/test', $data);
预期输出:
Cat: 1, Sort: 20
Cat: 2, Sort: 13
如果我对你到底要实现的目标有点困惑,请原谅我,但是当我运行以下内容(基于你的代码)时:
<?php
$categories = array("1", "2");
$sortOrder = array("20", "13", "", "");
echo '<pre>';
foreach($categories as $cat) {
foreach($sortOrder as $sort) {
if(strlen($sort) > 0 ) {
print("Cat: $cat, Sort: $sort 'n");
}
}
}
echo '</pre>';
?>
我得到以下内容:
Cat: 1, Sort: 20
Cat: 1, Sort: 13
Cat: 2, Sort: 20
Cat: 2, Sort: 13
那么,你对结果的期待究竟是什么? 你能提供一些示例输出吗?
编辑:
在这种情况下,您需要的是一个 for 循环:
<?php
$categories = array("1", "2");
$sortOrder = array("20", "13", "", "");
echo '<pre>';
for($i = 0; $i < count($categories); $i++) {
print("Cat: $categories[$i], Sort: $sortOrder[$i] 'n");
}
echo '</pre>';
?>
会让你:
Cat: 1, Sort: 20
Cat: 2, Sort: 13
(以防万一Crackertastic没有回到它。我假设你的意思是$categories的第一个元素与$sortOrder的第一个元素匹配,依此类推?然后我认为你想要这样的东西:
for ($i = 0; $i < count($categories); $i++) {
$cat = $categories[$i];
$sort = $sortOrder[$i];
print("Cat: $cat, Sort: $sort 'n");
}
但是,如果$categories的条目多于$sortOrder,这将崩溃。也许你正在其他地方处理这个问题。