Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Не могу изменить значение в ассоциативном массиве! Как исправить?
Код:
$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, 13:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
$arr[$key] = $value;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.06.2019, 13:40   #3
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 20
По умолчанию

Почему-то не работает у меня
Код:
<?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, 13:48   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

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

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

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

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

var_dump($arr1);

var_dump(process([]));
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

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

Вы мой гений!
Код:
<?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>";
?>
Икар К вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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