插入双值

时间:2013-09-23 23:43:29

标签: php arrays foreach

在foreach循环之前

$categories结果 -

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

在foreach循环中得到

$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) ""}

在foreach循环中得到

$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 

2 个答案:

答案 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,那么这将会中断。也许你正在其他地方处理。