正在插入的双精度值


Double values being inserted

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,这将崩溃。也许你正在其他地方处理这个问题。