0

$categoriesforeach 循环之前的结果 -

array(2) { [0]=> string(1) "1" [1]=> string(1) "2"}

$categoriesforeach 循环中的结果 -

string(1) "1"string(1) "1"string(1) "2"string(1) "2"

$sortOrderforeach 循环之前的结果 -

array(4) { [0]=> string(2) "20" [1]=> string(2) "13" [2]=> string(0) "" [3]=> string(0) ""}

$sortOrderforeach 循环中的结果 -

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 
4

2 回答 2

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>';

?>

我得到以下信息:

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 
于 2013-09-24T00:01:14.270 回答
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 更多的条目,这将崩溃。也许您正在其他地方处理它。

于 2013-09-24T00:07:23.493 回答