Всем здравствуйте У меня есть массив такого вида: PHP: Array ( [0] => красный [1] => синий [4] => зелёный ) Мне нужно переименовать ключи, чтобы массив имел следующий вид: PHP: Array ( [0] => red [1] => blue [4] => green ) Иными словами – названия цветов с русского поменять на английские. Как это сделать? Очень много статей читал в Интернете, но, видимо, в голове уже «каша» и на практике ничё толком не получается. Подскажите, пожалуйста, верное направление к решению данной задачки.
Каша в голове у вас на лицо. А всё от того, что читать надо бумажные книги купленные в магазине, а не статьи в интернетах. Тогда вы не будете путать ключи массива со значениями. В данном случае менять ничего не надо. Просто нужны два массива $ru и $en.
Valick, Ваш ответ здесь – тоже опубликован в Интернете, а не в умной книжке. И теперь дилемма: принимать Ваши слова как помощь в поиске ответа на поставленный вопрос или проигнорировать, чтобы не добавлять порцию новой «каши». И тем не менее, Вы хорошо поняли, что я имел ввиду и всё же решили попрекнуть неспециалиста в области программирования неверно указанными названиями терминов. Но... Преимущественно в статьях и примерах я встречал их обозначения как ключи. И, честно говоря, мне абсолютно «по барабану» чем они являются в действительности – значениями, ключами, замками, отмычками... Дело-то вовсе не в этом и Вы это отлично знаете. Посмотрите выше – MouseZver не стал пенять по поводу терминов, а просто-напросто дал ссылку на страницу, за что ему СПАСИБО и палец вверх. Учитесь отвечать всегда корректно и без высокомерия.
@GoSou, моё высокомерие исключительно в вашей голове, обычно такое происходит когда в своём глазу "бревна не видно".
Немножко поправлю Вас: Ваше высокомерие не в моей голове, а Ваше высокомерие я увидел. Объясню чуточку подробнее, чтобы было понятно, что к чему. Сразу же отмечу: не сомневаюсь – Вы хорошо владеете php-программированием и задачки, сложные для начинающих, для Вас не представляют никаких затруднений. Со своими коллегами на форуме Вы ведёте ровный диалог и в этом нет ничего экстраординарного и по сути – это нормальная модель поведения в сообществе. Но вот Вы встретили «чайника», который в своём вопросе перепутал терминологию и – надо обязательно ткнуть носом в ошибку, а не тактично поправить. Более того, в своём вопросе я проиллюстрировал свой массив – что имеется и что из этого нужно получить. Разве Вы этого не увидели? В таком случае, у кого же из нас двоих оказалось «бревно в глазу», помешавшее увидеть иллюстрацию? Я старше Вас и на своём веку повидал много народу – от грубого хамла до людей, с которыми интересно и увлекательно общаться. Мне приходилось сталкиваться с индивидуумами, которые с коллегами рангом ниже разговаривали «через губу», и чем ниже ранг собеседника, тем выше задирали нос до тех пор, пока не получали в нос (в буквальном смысле). Кстати, действовало очень отрезвляюще. И что характерно, в разговоре с начальниками они зачастую лебезили перед ними на цирлах, согнувшись в три погибели. Вы получили от меня в свой адрес не очень лицеприятный комментарий только потому, что Вы решили «задрать нос», увидев во мне php-неуча. И мне совершенно неведомо, как Вы поведёте себя в следующий раз, когда вновь на форуме встретите новичка с некорректной формулировкой в заданном вопросе. Может быть, опять высокомерно укажете на неверно сказанную терминологию, а может быть, тактично поправите с учётом данного опыта. И в заключение. Мне не нужно делать второй массив на основе первого, а требуется всего лишь переименовать значения (теперь я точно знаю что есть ключи, а что – значения; Вы к этому имеете косвенное отношение, так как толково объяснили между ними разницу совершенно другие люди). PHP: $translations = [ 'красный' => 'red', 'синий' => 'blue', 'зелёный' => 'green' ]; $input = [ 0 => 'красный', 1 => 'синий', 4 => 'зелёный' ]; foreach ( $input as $k => $v ) { isset( $translations[ $v ] ) && $input[ $k ] = $translations[ $v ]; }
@GoSou , еще раз повторю, никакого высокомерия в моём посте нет, есть исключительно ваше восприятие. Читать книги я рекомендую всем, а не только вам.
@Valick, не признак ли? --- Добавлено --- @GoSou, разными способами можно обеспечить соответствие "переводов". Один массив - на эталонном языке (с числовыми индексами), другой - с "эталонными" значениями вместо индексов для значений "переводов" (как подсказано). Несколько массивов со значениями на разных языках, сопоставляемых по числовому ключу (индексу) массива...
@GoSou, спасибо за пояснения. Крутится в голове ещё одна модель решения задачи, но её уже буду опробывать самостоятельно. Честное слово, по незнанию могу невзначай что-нибудь опять понапутать с терминами, и вместо грамотной помощи специалистов и тактичных поправок непременно укажут на ошибку как признак ни на что неспособного «чайника». Безусловно, чтение книг расширяет кругозор и знания, Вашу рекомендацию всецело поддерживаю и одобряю. Однако терминологию по поводу ключей и значений массива мне разъяснили в Интернете и если следовать Вашей же логике [не читать статей в Интернете] – это не верно?! Абсурд. Поднимемся вверх к Вашему первому сообщению. Каша в голове у вас на лицо. Замечу: слово каша почему-то без кавычек, без них смысл фразы воспринимается иначе. Но это не так страшно, печально другое – это Ваше самое первое предложение в диалоге с незнакомым человеком, который своим вопросом ни лично Вас, ни Ваших коллег на форуме никоим образом и никак не оскорбил. Зато Вы начали разговор сразу же с оскорбления. Иными словами, Вы увидели, что по знаниям php-программирования намного превосходите меня и (наверно) поэтому сочли приемлемой столь грубую формулировку. Тем самым, Вы сразу же ставите себя выше меня (статусно). Это как раз и есть высокомерие. Ваше первое предложение в первом посте не вызвало бы никакого отторжения, а наоборот расценивалось как юмор, если бы мы были давно знакомы и были в хороших отношениях. Однако в самом начале диалога с незнакомым человеком назвать это шуткой никак нельзя. А всё от того, что читать надо бумажные книги купленные в магазине, а не статьи в интернетах. С терминологией массива сказано выше, повторять не буду. Добавлю следующее: к сожалению, в нынешнее время в книжках на полках книжных магазинов немало белиберды. Типографиям «фиолетово» что печатать, лишь бы деньги заказчик платил и законодательство РФ не нарушалось. И уж поверьте на слово (хотя можете и не верить), в современных книгах немало ошибок, неточностей, домыслов и прочей фигни. Во избежание неверного понимания уточняю: речь идёт не о книгах по программированию, а о книгах вообще. Тогда вы не будете путать ключи массива со значениями. Я их не путал – я не знал между ними разницы. Путать и не знать – это разные понятия. В данном случае менять ничего не надо. Просто нужны два массива $ru и $en. Мне не нужны два массива, мне нужно в массиве просто-напросто переименовать значения и на основе переименованных значений работать с тем же самым массивом далее. Точка.
@GoSou, сначала базовые знания, а это книги, потом уже всё остальное в том числе и статьи в интернете. Не знаете какие книги хорошие - спросите. именно поэтому надо читать книги, что бы знать очередное заблуждение, когда-нибудь поймёте, а может вдобавок еще и стыдно станет, за то что наговорили столько ерунды про меня, и навешали уйму ярлыков. По поводу кто из нас старше, вопрос достаточно спорный.
на всякий случай Спойлер: en.php PHP: <?php return array(0=>'red',1=>'blue',4=>'green'); Спойлер: ru.php PHP: <?php return array(0=>'красный',1=>'синий',4=>'зелёный'); Спойлер: inc.php PHP: <?php error_reporting(E_ALL); ini_set('display_errors', 'On'); header('Content-Type: text/html; charset=utf-8'); $lang = ''; //$lang = 'en'; switch ($lang) { case 'en': $my_array = include( 'en.php' ); break; default: $my_array = include( 'ru.php' ); } echo '<pre>'; print_r( $my_array ); echo '</pre>';
А вот за это Вам большое СПАСИБО – без всякой иронии и сарказма. Именно такой ответ или в подобном роде заложил бы начало нашего диалога в совершенно другой – тёплой – атмосфере! Для этого и создаются тематические форумы, чтобы знающие специалисты помогали выбраться из затруднений неопытным коллегам. Разве не так? (вопрос риторический) P.S. 1977 - 1962 = 15