Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 22.06.2019, 14:14   #1
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию Помогите ассоциативным массивом

Не могу изменить значение в ассоциативном массиве! Как исправить?
Код:
$a = array ("first" => 755,"second" => 12);

function f($x,$a){// вернет значение
foreach($a as $k=>$v) if ($x==$k) return $v;
}

function h3($x,$a){// изменяет значение на три
foreach($a as $k=>$v) if ($x==$k) $v=3;
}

//f('second',$a);// вызывать так
$n='second';
echo "<h1>значение ключа $n=".(f($n,$a))."</h1>";;
h3('second',$a);// установить значение равным трем
echo "<h1>значение ключа $n=".(f($n,$a))."</h1>";
Икар К вне форума Ответить с цитированием
Старый 22.06.2019, 14:17   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,487
По умолчанию

Код:
$arr[$key] = $value;
Alex11223 на форуме Ответить с цитированием
Старый 22.06.2019, 14:40   #3
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию

Почему-то не работает у меня
Код:
<?php
$a = array ("first" => 755,"second" => 12);

function f($x,$a){// вернет значение
foreach($a as $k=>$v) if ($x==$k) return $v;
}

function h3($x,$a){// изменяет значение на три
foreach($a as $k=>$v) if ($x==$k) {
	$a[$k]=3;
	echo "<h1>значение ключа $k изменнено на 3</h1>";
}
}

$n='second';
echo "<h1>-значение ключа $n=".(f($n,$a))."</h1>";//12
h3($n,$a);// установить значение равным трем
echo "<h1>+значение ключа $n=".(f($n,$a))."</h1>";//12

echo "</center></body></html>";
?>
Икар К вне форума Ответить с цитированием
Старый 22.06.2019, 14:48   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,487
По умолчанию

Массивы по умолчанию передаются по значению (копируются) в РНР.

Код:
function(&$arr)
для передачи по ссылке.

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

Например так:
Код:
function process($arr)
{
    $arr[42] = 'hi';
    return $arr;
}

$arr1 = [42 => 123, 43 => 124];
$arr1 = process($arr);

var_dump($arr1);

var_dump(process([]));

Последний раз редактировалось Alex11223; 22.06.2019 в 14:51.
Alex11223 на форуме Ответить с цитированием
Старый 22.06.2019, 15:05   #5
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию

Вы мой гений!
Код:
<?php
$a = array ("first" => 755,"second" => 12);

function f($x,$a){// вернет значение
foreach($a as $k=>$v) if ($x==$k) return $v;
}

function h3($x,$a){// изменяет значение на три
foreach($a as $k=>$v) if ($x==$k) {
	$a[$k]=3;
	echo "<h1>значение ключа $k изменнено на 3</h1>";
}
return $a;
}

$n='second';
echo "<h1>-значение ключа $n=".(f($n,$a))."</h1>";//12
$a=h3($n,$a);// установить значение равным трем
echo "<h1>+значение ключа $n=".(f($n,$a))."</h1>";//12

echo "</center></body></html>";
?>
Икар К вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с массивом Прелесть1 Паскаль, Turbo Pascal, PascalABC.NET 2 28.10.2015 19:31
Помогите с массивом Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 21.08.2007 22:54
Помогите с массивом mishel Общие вопросы Delphi 1 04.03.2007 01:15