Заменить элементы массива

mychatik

Premium
Premium
26.05.15
429
322
mychatik.ru
#1
Решил заполнить атрибут alt у знаков зодиака в профиле.

Так сделано по умолчанию.
PHP:
 $zpic = getZodiac($current_user->b_day, $current_user->b_month); echo '<img src="'.$current_design.'zodiac/'.$zpic.'.gif" alt="">';
Для информации: У меня в функции getZodiac из zodiac.php, в отличие от стандарта, не передаётся расширение картинки.

Делаю так:
PHP:
 $zpic = getZodiac($current_user->b_day, $current_user->b_month); $zpcs = array('kozerog','vodolei','ribi','oven','telec','blizneci','rak','lev','deva','vesi','scorpion','strelec','zodiac'); $zals = array('Козерог','Водолей','Рыбы','Овен','Телец','Близнецы','Рак','Лев','Дева','Весы','Скорпион','Стрелец','Зодиак'); if (in_array( $zpic, $zpcs, true)): $zalt = array_replace($zpcs, $zals); endif; echo '<img src="'.$current_design.'zodiac/'.$zpic.'.gif" alt="'.$zalt.'">';
Логика такова:
Имеем 2 массива $zpcs и $zals.
Если значение $zpic есть в $zpcs, то заменяем его на $zals и подставляем в alt="".

Но не получается... :(((
В итоге имеем ошибку alt="Array":
HTML:
<img src="http://mychatik.ru/designes/mychatik/zodiac/blizneci.gif" alt="Array">
Пробовал убирать проверку if, менять в массиве кавычки одинарные на двойные... Никаких изменений.
Если сделать замену так:
PHP:
$zalt = array_replace($zpic, $zals);
то alt="" прописывается без значения.

На PHPTESTER - Test PHP code online пробовал - замена работает...
PHP:
 $zpcs = array('kozerog','vodolei','ribi','oven','telec','blizneci','rak','lev','deva','vesi','scorpion','strelec','zodiac'); $zals = array('Козерог','Водолей','Рыбы','Овен','Телец','Близнецы','Рак','Лев','Дева','Весы','Скорпион','Стрелец','Зодиак'); $zalt = array_replace($zpcs, $zals); print_r($zalt);
PHP:
 Array ( [0] => Козерог [1] => Водолей [2] => Рыбы [3] => Овен [4] => Телец [5] => Близнецы [6] => Рак [7] => Лев [8] => Дева [9] => Весы [10] => Скорпион [11] => Стрелец [12] => Зодиак )
В чём же моя ошибка?
И можно ли делать замену без дополнительного массива $zpcs, а сразу проверяя и подменяя значение $zpic?

Была уже идея просто переименовать все картинки правильными названиями знаков зодиака и выводить $zpic и в img, и в alt.
Но, блин, хочется подписи на русском языке сделать, а не на английском.
 
Последнее редактирование:

Rain

Администратор
Команда форума
04.09.14
334
281
28
#2
$zalt у тебя после array_replace() стает типом array, что собственно и выводится.
Если я правильно понял задумку - есть более просто решение - ассоциативный массив.
PHP:
$zpic = getZodiac($current_user->b_day, $current_user->b_month); //$zpic = 'kozerog';
$zpcs = array( 'kozerog' => 'Козерог', 'ribi' => 'Рыбы', ..... 'zodiac' => 'Зодиак'
);
$zalt = (isset($zpcs[$zpic]))?$zpcs[$zpic]:"";
var_dump($zalt); //string(14) "Козерог"