Вобщем как-то решил сократить повторяющийся код в foreach через функцию и столкнулся с тем что код не работает. Ниже привожу простенький код, который не работает. Скорее всего это особенность php. Подскажите есть ли возможность как-то сократить код в foreach если он повторяется? PHP: function param($value){ // return $value; // так работает return $arr2[$value]; // а так нет } $arr = ['color1'=>'red','color2'=>'yellow']; $arr2 = ['red'=>'sky','yellow'=>'flower']; // print_r($arr); foreach($arr as $value){ // echo $value , PHP_EOL; // echo $arr2[$value] , PHP_EOL; // так работает echo param($value) , PHP_EOL;// так не работает }
Читайте ошибки при запуске скрипта. В данном случае это: Warning: Undefined variable $arr2 in C:\.. Функция param ничего не знает о переменной $arr2. Вам нужно передать переменную в функцию. Спойлер: Вот рабочий вариант: PHP: <?php function param($value, $arr2) { return $arr2[$value]; } $arr = ['color1' => 'red', 'color2' => 'yellow']; $arr2 = ['red' => 'sky', 'yellow' => 'flower']; foreach ($arr as $value) { echo param($value, $arr2), PHP_EOL; }