2013-09-23 4 views
0

$categories результата перед циклом Еогеаспа -Двойных значений вставляются

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

$categories результата в пределах цикла Еогеаспа -

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

$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($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

Можете ли вы предоставить информацию о том, каковы ваши предполагаемые результаты? – Crackertastic

+0

@Crackertastic Я в основном хочу, как первые массивы, и «особые» результаты, а не «двойные» значения –

+0

Что должен делать ваш код? Внешний foreach выполняется дважды, потому что у вас есть две записи в $ категориях. Таким образом, весь $ sortOrder foreach выполняется дважды. Поэтому, если вы печатаете var_dump ($ sort) или что-то в этом роде (не могу сказать), вы получите все в два раза. Я уверен, что не понимаю вопроса. – matt

ответ

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 

Итак, что именно вы ожидали от результатов? Не могли бы вы предоставить какой-то образец продукции?

EDIT:

В этом случае то, что вам нужно, это цикл:

<?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 
+0

Я сделал :) см. Вопрос –

+0

Спасибо :) столько –

+0

Очень рад, рад помочь! :-) – Crackertastic

1

(Только в случае, если Crackertastic не получает обратно это.) Я предполагаю, что вы имеете в виду, что первый элемент из $ категорий совпадает с первым элементом $ sortOrder и т. д.? Тогда я думаю, что вы хотите что-то вроде:

for ($i = 0; $i < count($categories); $i++) { 
    $cat = $categories[$i]; 
    $sort = $sortOrder[$i]; 
    print("Cat: $cat, Sort: $sort \n"); 
} 

Но это сломается, если $ категории имеет больше записей, чем $ SortOrder. Возможно, вы справляетесь с этим в другом месте.

+0

Спасибо, Мэтт, это устранит необходимость в foreach?Он не должен иметь больше записей, поскольку для каждого $ cat есть только поле ввода $ sort. –

+0

Да, просто используйте цикл for. – matt

+0

Спасибо, Мэтт хотел бы, чтобы я согласился с тобой и с тобой: мне было немного в тупике –

Смежные вопросы