За последние 24 часа нас посетили 36345 программистов и 1741 робот. Сейчас ищут 793 программиста ...

Переименование ключей в массиве

Тема в разделе "PHP для новичков", создана пользователем GoSou, 4 окт 2018.

  1. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    Всем здравствуйте
    У меня есть массив такого вида:
    PHP:
    1. (
    2.     [0] => красный
    3.     [1] => синий
    4.     [4] => зелёный
    5. )
    Мне нужно переименовать ключи, чтобы массив имел следующий вид:
    PHP:
    1. (
    2.     [0] => red
    3.     [1] => blue
    4.     [4] => green
    5. )
    Иными словами – названия цветов с русского поменять на английские. Как это сделать?
    Очень много статей читал в Интернете, но, видимо, в голове уже «каша» и на практике ничё толком не получается. Подскажите, пожалуйста, верное направление к решению данной задачки.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
  3. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Каша в голове у вас на лицо. А всё от того, что читать надо бумажные книги купленные в магазине, а не статьи в интернетах. Тогда вы не будете путать ключи массива со значениями. В данном случае менять ничего не надо. Просто нужны два массива $ru и $en.
     
  4. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    Valick, Ваш ответ здесь – тоже опубликован в Интернете, а не в умной книжке. И теперь дилемма: принимать Ваши слова как помощь в поиске ответа на поставленный вопрос или проигнорировать, чтобы не добавлять порцию новой «каши».
    И тем не менее, Вы хорошо поняли, что я имел ввиду и всё же решили попрекнуть неспециалиста в области программирования неверно указанными названиями терминов. Но... Преимущественно в статьях и примерах я встречал их обозначения как ключи. И, честно говоря, мне абсолютно «по барабану» чем они являются в действительности – значениями, ключами, замками, отмычками... Дело-то вовсе не в этом и Вы это отлично знаете.
    Посмотрите выше – MouseZver не стал пенять по поводу терминов, а просто-напросто дал ссылку на страницу, за что ему СПАСИБО и палец вверх. Учитесь отвечать всегда корректно и без высокомерия.
     
  5. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @GoSou, моё высокомерие исключительно в вашей голове, обычно такое происходит когда в своём глазу "бревна не видно".
     
  6. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    Немножко поправлю Вас: Ваше высокомерие не в моей голове, а Ваше высокомерие я увидел. Объясню чуточку подробнее, чтобы было понятно, что к чему. Сразу же отмечу: не сомневаюсь – Вы хорошо владеете php-программированием и задачки, сложные для начинающих, для Вас не представляют никаких затруднений.
    Со своими коллегами на форуме Вы ведёте ровный диалог и в этом нет ничего экстраординарного и по сути – это нормальная модель поведения в сообществе. Но вот Вы встретили «чайника», который в своём вопросе перепутал терминологию и – надо обязательно ткнуть носом в ошибку, а не тактично поправить. Более того, в своём вопросе я проиллюстрировал свой массив – что имеется и что из этого нужно получить. Разве Вы этого не увидели? В таком случае, у кого же из нас двоих оказалось «бревно в глазу», помешавшее увидеть иллюстрацию?
    Я старше Вас и на своём веку повидал много народу – от грубого хамла до людей, с которыми интересно и увлекательно общаться. Мне приходилось сталкиваться с индивидуумами, которые с коллегами рангом ниже разговаривали «через губу», и чем ниже ранг собеседника, тем выше задирали нос до тех пор, пока не получали в нос (в буквальном смысле). Кстати, действовало очень отрезвляюще. И что характерно, в разговоре с начальниками они зачастую лебезили перед ними на цирлах, согнувшись в три погибели.
    Вы получили от меня в свой адрес не очень лицеприятный комментарий только потому, что Вы решили «задрать нос», увидев во мне php-неуча. И мне совершенно неведомо, как Вы поведёте себя в следующий раз, когда вновь на форуме встретите новичка с некорректной формулировкой в заданном вопросе. Может быть, опять высокомерно укажете на неверно сказанную терминологию, а может быть, тактично поправите с учётом данного опыта.
    И в заключение. Мне не нужно делать второй массив на основе первого, а требуется всего лишь переименовать значения (теперь я точно знаю что есть ключи, а что – значения; Вы к этому имеете косвенное отношение, так как толково объяснили между ними разницу совершенно другие люди).
    PHP:
    1. $translations = [ 'красный' => 'red', 'синий' => 'blue', 'зелёный' => 'green' ];
    2. $input =   [ 0 => 'красный',     1 => 'синий',      4 => 'зелёный' ];
    3. foreach ( $input as $k => $v ) {
    4.     isset( $translations[ $v ] ) && $input[ $k ] = $translations[ $v ];
    5. }
     
  7. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @GoSou , еще раз повторю, никакого высокомерия в моём посте нет, есть исключительно ваше восприятие. Читать книги я рекомендую всем, а не только вам.
     
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Valick, не признак ли? :D
    --- Добавлено ---
    @GoSou, разными способами можно обеспечить соответствие "переводов".
    Один массив - на эталонном языке (с числовыми индексами), другой - с "эталонными" значениями вместо индексов для значений "переводов" (как подсказано).
    Несколько массивов со значениями на разных языках, сопоставляемых по числовому ключу (индексу) массива...
     
    GoSou нравится это.
  9. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    @GoSou, спасибо за пояснения. Крутится в голове ещё одна модель решения задачи, но её уже буду опробывать самостоятельно. Честное слово, по незнанию могу невзначай что-нибудь опять понапутать с терминами, и вместо грамотной помощи специалистов и тактичных поправок непременно укажут на ошибку как признак ни на что неспособного «чайника».

    Безусловно, чтение книг расширяет кругозор и знания, Вашу рекомендацию всецело поддерживаю и одобряю. Однако терминологию по поводу ключей и значений массива мне разъяснили в Интернете и если следовать Вашей же логике [не читать статей в Интернете] – это не верно?! Абсурд.
    Поднимемся вверх к Вашему первому сообщению.

    Каша в голове у вас на лицо.
    Замечу: слово каша почему-то без кавычек, без них смысл фразы воспринимается иначе. Но это не так страшно, печально другое – это Ваше самое первое предложение в диалоге с незнакомым человеком, который своим вопросом ни лично Вас, ни Ваших коллег на форуме никоим образом и никак не оскорбил. Зато Вы начали разговор сразу же с оскорбления. Иными словами, Вы увидели, что по знаниям php-программирования намного превосходите меня и (наверно) поэтому сочли приемлемой столь грубую формулировку. Тем самым, Вы сразу же ставите себя выше меня (статусно). Это как раз и есть высокомерие.
    Ваше первое предложение в первом посте не вызвало бы никакого отторжения, а наоборот расценивалось как юмор, если бы мы были давно знакомы и были в хороших отношениях. Однако в самом начале диалога с незнакомым человеком назвать это шуткой никак нельзя.

    А всё от того, что читать надо бумажные книги купленные в магазине, а не статьи в интернетах.
    С терминологией массива сказано выше, повторять не буду. Добавлю следующее: к сожалению, в нынешнее время в книжках на полках книжных магазинов немало белиберды. Типографиям «фиолетово» что печатать, лишь бы деньги заказчик платил и законодательство РФ не нарушалось. И уж поверьте на слово (хотя можете и не верить), в современных книгах немало ошибок, неточностей, домыслов и прочей фигни. Во избежание неверного понимания уточняю: речь идёт не о книгах по программированию, а о книгах вообще.

    Тогда вы не будете путать ключи массива со значениями.
    Я их не путал – я не знал между ними разницы. Путать и не знать – это разные понятия.

    В данном случае менять ничего не надо. Просто нужны два массива $ru и $en.
    Мне не нужны два массива, мне нужно в массиве просто-напросто переименовать значения и на основе переименованных значений работать с тем же самым массивом далее. Точка.
     
  10. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @GoSou, сначала базовые знания, а это книги, потом уже всё остальное в том числе и статьи в интернете. Не знаете какие книги хорошие - спросите.
    именно поэтому надо читать книги, что бы знать
    очередное заблуждение, когда-нибудь поймёте, а может вдобавок еще и стыдно станет, за то что наговорили столько ерунды про меня, и навешали уйму ярлыков.
    По поводу кто из нас старше, вопрос достаточно спорный.
     
  11. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    на всякий случай
    PHP:
    1. <?php
    2. return array(0=>'red',1=>'blue',4=>'green');
    PHP:
    1. <?php
    2. return array(0=>'красный',1=>'синий',4=>'зелёный');
    PHP:
    1. <?php
    2. ini_set('display_errors', 'On');
    3. header('Content-Type: text/html; charset=utf-8');
    4.  
    5. $lang = '';
    6. //$lang = 'en';
    7. switch ($lang) {
    8.   case 'en':
    9.     $my_array = include( 'en.php' );
    10.     break;
    11.   default:
    12.     $my_array = include( 'ru.php' );
    13. }
    14.  
    15. echo '<pre>';
    16. print_r( $my_array );
    17. echo '</pre>';
     
    GoSou нравится это.
  12. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    А вот за это Вам большое СПАСИБО – без всякой иронии и сарказма. Именно такой ответ или в подобном роде заложил бы начало нашего диалога в совершенно другой – тёплой – атмосфере! Для этого и создаются тематические форумы, чтобы знающие специалисты помогали выбраться из затруднений неопытным коллегам. Разве не так? (вопрос риторический)

    P.S. 1977 - 1962 = 15
     
  13. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    это исключительно только в том случае, что никто из нас не соврал :)
    в интернете никому нельзя верить
     
  14. GoSou

    GoSou Новичок

    С нами с:
    6 май 2017
    Сообщения:
    37
    Симпатии:
    3
    Я уже давно не в том возрасте, чтобы врать.