$categories
结果 -
array(2) { [0]=> string(1) "1" [1]=> string(1) "2"}
$categories
-
string(1) "1"string(1) "1"string(1) "2"string(1) "2"
在foreach循环之前 $sortOrder
结果 -
array(4) { [0]=> string(2) "20" [1]=> string(2) "13" [2]=> string(0) "" [3]=> string(0) ""}
$sortOrder
-
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
答案 0 :(得分:1)
请原谅我,如果我对你想要达到的目标有点困惑,但当我运行以下内容时(基于你的代码):
<?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>';
?>
我得到了followimg:
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
答案 1 :(得分:1)
(以防万一Crackertastic没有回复它。)我假设你的意思是$ categories的第一个元素与$ sortOrder的第一个元素匹配,依此类推?然后我想你想要这样的东西:
for ($i = 0; $i < count($categories); $i++) {
$cat = $categories[$i];
$sort = $sortOrder[$i];
print("Cat: $cat, Sort: $sort \n");
}
但如果$ categories的条目多于$ sortOrder,那么这将会中断。也许你正在其他地方处理。