Jump to content

Recommended Posts

Есть 2 массива. В первом хранятся айди всех товаров. Во втором, айди избранных товаров. Мне нужно, сравнить эти айди и если есть совпадения - провести некоторые манипуляции. Делаю так:

foreach ($array1 as $value1) {
	foreach ($array2 as $value2) {
		if($value1 != $value2){
			$var = '0';
		}
		else{
			$var = '1';
		}
	}
}

Как я понимаю - должно все работать. Но у меня не выходит ($var равна 0 всегда). Ткните носом, что не так делаю. Спасибо!

$array1:
Array
(
    [0] => 10441
    [1] => 13302
    [2] => 13546
    [3] => 10500
    [4] => 10102
    [5] => 10119
    [6] => 10435
    [7] => 10785
    [8] => 10439
    [9] => 13199
    [10] => 10833
    [11] => 10343
    [12] => 10338
    [13] => 10101
    [14] => 13771
    [15] => 10443
    [16] => 10341
    [17] => 13268
    [18] => 10111
    [19] => 10113
    [20] => 10354
    [21] => 10114
    [22] => 10115
    [23] => 10116
    [24] => 10112
    [25] => 10517
    [26] => 10104
    [27] => 10108
    [28] => 10107
    [29] => 10118
    [30] => 10442
    [31] => 10314
    [32] => 10150
    [33] => 10106
    [34] => 10105
    [35] => 10110
    [36] => 14252
)

$array2:
Array
(
    [0] => 13199
    [1] => 10439
    [2] => 10435
    [3] => 10500
    [4] => 13302
    [5] => 10441
)

 

Edited by davyduck

Share this post


Link to post
Share on other sites
foreach ($array1 as $value1) {
        if (!in_array($value1, $array2) {
            $var = '0';
        } else {
            $var = '1';
        }
}

 

Share this post


Link to post
Share on other sites
foreach (array_intersect($array1, $array2) as $item) {
	...	
}

 

  • +1 2

Share this post


Link to post
Share on other sites

Для чего я это делаю. Первый массив (как писал выше) выводит айди товаров, второй айди выбраных товаров. Если айди одинаковые в переменную $checked заношу слово "checked" (таким образом хочу оставлять выбранными чекбоксы товаров которые уже в избранных). 

foreach($array1 as $value1){
	if(in_array($value1, $array2)){
		$data['checked'] = 'checked';
	}else{
		$data['checked'] = '';
	}
} 

Смотрю в код и понимаю, что все должно работать. Но не работает. Все чекбоксы получают checked. Не хочу что бы кто-то написал готовый код. Хочу разобраться в проблеме. Толкните советом. Спасибо!

 

<input type="checkbox" name="ID[]" value="<?php echo $item['ID']?>" <?php echo $checked;?>>

Так же, буду благодарный за более элегантный совет решения моей задачи :) 

Edited by davyduck

Share this post


Link to post
Share on other sites

Я могу лишь предположить как устроен ваш массив в контроллере но примерно как я это вижу:

$array2 = array(13199,10439,10435,10500,13302,10441);

$data['items'] = array();

$items = array(); //здесь вы получаете данные

if ($items) {
  foreach ($items as $item) {
    $data['items'][] = array(
      'id' => $item['id'],
      'checked' => (in_array($item['id'], $array2)) ? 'checked' : '' 
    );
  }
}

это так в контроллере может быть.

 

<input type="checkbox" name="id[]" value="<?php echo $item['id']?>" <?php echo $item['checked']?>>

 

Share this post


Link to post
Share on other sites
22 часа назад, davyduck сказал:

Не хочу что бы кто-то написал готовый код. Хочу разобраться в проблеме

 

22 часа назад, davyduck сказал:

Так же, буду благодарный за более элегантный совет решения моей задачи

Вы хотите разобраться или получит решение  ?

 

Если сами, тогда логика такая, получаете дифф  $data['diff'] = array_intersect($array1, $array2); тут будет ваша выборка id чего-то там

Дальше, в tpl проверяете если ли в массиве значение, и добавляете чек  <input ....  <?= in_array($id, $diff) ? 'checked' : ''; ?>

 

Share this post


Link to post
Share on other sites

Всем спасибо за советы!) Разобрался во всех вопросах)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.