Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как правильно построить foreach.


Автор: Predator199 22.9.2012, 07:24
Новичок еще в php. Сколько попыток не делал, не получается реализовать то чего хочу.
Есть:

Код

Array ( [0] => Array ( [id] => 410 [map] => de_boston) [1] => Array ( [id] => 412 [map] => c7m2_barge) [2] 


Как правильно воспользоваться foreach, так чтоб заменило название карты с id 410?

Автор: Gold Dragon 22.9.2012, 08:18
Код

$aa[] = Array('id'  => 410, 'map' => 'de_boston');
$aa[] = Array('id'  => 412, 'map' => 'c7m2_barge');

echo "<h3>Только значения:</h3>";

foreach ($aa as $a) {
    echo 'ID = ' . $a['id'] . ', MAP = ' . $a['map'] . '<br />';
}

echo "<hr /><h3>Первичный ключ и значения:</h3>";

foreach ($aa as $key => $value) {
    echo $key . ': ID = ' . $value['id'] . ', MAP = ' . $value['map'] . '<br />';
}


Добавлено через 48 секунд
Цитата(Predator199 @  22.9.2012,  08:24 Найти цитируемый пост)
Как правильно воспользоваться foreach, так чтоб заменило название карты с id 410? 
а вот  вопрос не понял

Автор: Predator199 22.9.2012, 08:53
Код

$gg1 = unserialize($gg);

$aa[] = Array('id'  => 410, 'map' => 'yyyyyyyyyyyyyyyyy');
foreach ($aa as $key => $value) {
    echo $key . ': ID = ' . $value['id'] . ', MAP = ' . $value['map'] . '<br />';
}

$gg1 = serialize($gg);
print_r($gg1);

$gg -путь до файла.
Совсем не пойму, как  найти совпадение по id и заменить карту?
Как в sql, находишь строчку с id=410 и обновляешь нужную тебе ячейку.

Автор: Gold Dragon 22.9.2012, 10:07
Код

// Массив который у нас есть
$array[] = Array('id'  => 410, 'map' => 'de_boston');
$array[] = Array('id'  => 412, 'map' => 'c7m2_barge');

// Какой идентификатор ищем
$b = 410;

// На что заменяем
$d = "Новое значение";

// Гоняем массив
foreach ($array as $key => $value) {

    // Находим наш идентификатор
    if ($value['id'] == $b) {

        // Заменяем на нужное значение
        $array[$key]['map'] = $d;

        // За одно выходим из цикла
        break;
    }
}


Автор: Predator199 22.9.2012, 10:40
Код

$gg1 = Array ( [0] => Array ( [id] => 410 [map] =>de_boston);

$b = 410;
$d = "Новое значение";
foreach ($gg1 as $key => $value) {
    // Находим наш идентификатор
    if ($value['id'] == $b) {
        // Заменяем на нужное значение
        $array[$key]['map'] = $d;
        // За одно выходим из цикла
        break;
    }
}


print_r($gg1);


В итоге получаю 
Array ( [0] => Array ( [id] => 410 [map] =>de_boston).
Может не так вывожу результат?

Автор: Guedda 22.9.2012, 11:01
Код

$gg1 = Array ( [0] => Array ( ['id'] => 410 ['map'] => 'de_boston');
$b = 410;
$d = "Новое значение";
foreach ($gg1 as $key => $value) {
    // Находим наш идентификатор
    if ($value['id'] == $b) {
        // Заменяем на нужное значение
        $gg1[$key]['map'] = $d;
        // За одно выходим из цикла
        break;
    }
}
print_r($gg1);

Вот так будет работать. Проверено.

Автор: Predator199 22.9.2012, 11:31
Спасибо большое.

Автор: Guedda 22.9.2012, 11:54
Цитата(Predator199 @  22.9.2012,  12:31 Найти цитируемый пост)
Спасибо большое. 

Не за что. Но на будущее, внимательно проверяйте и читайте код, который Вам дали, как пример (а не просто копируйте его). Вам его дают не для копи-паста, а чтобы Вы разобрались в проблеме (а не решили ее с помощью других).


P.S.: Если вопрос решен, не забывайте, пожалуйста, отмечать этот топик решенным (вверху справа увидите ссылку "Отметить тему, как решенную"

Автор: Predator199 23.9.2012, 13:45

Код

case "li1":
foreach($ser as $serv) {
$_SESSION['id'] = $serv['id'];
}
break;


Код

case "li2":
echo $_SESSION['id'];
break;


Как не пытайся, а передается только максимальный id из перечисленных в li1. Есть этому решение?

Автор: Evghenusi 23.9.2012, 15:15
Цитата(Predator199 @  23.9.2012,  13:45 Найти цитируемый пост)
Код

case "li1":
foreach($ser as $serv) {
$_SESSION['id'] = $serv['id'];
}
break;


Код

case "li2":
echo $_SESSION['id'];
break;


Как не пытайся, а передается только максимальный id из перечисленных в li1.

если максимальный айди у последнего элемента цикла, то всё логично.

Цитата(Predator199 @  23.9.2012,  13:45 Найти цитируемый пост)
Есть этому решение? 

ага, откройте книжку по PHP и заполните пробелы.

Автор: Predator199 26.9.2012, 21:00
Спс. Разобрался.Ранее заменяли, а как будит прибавить еще одну запись?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)