Хобрук: Ваш путь к мастерству в программировании

Взрывание массива и удаление префикса

Я пытаюсь создать массив, используя взорвать строку.

Вот моя строка:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";

И вот мой полный код:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
$d = explode(',', $string);
echo '<pre>';
var_dump($d);

и после этого я получил такой результат ..

array(7) {
  [0]=>
  string(3) "a:1"
  [1]=>
  string(3) "b:2"
  [2]=>
  string(3) "c:3"
  [3]=>
  string(3) "d:4"
  [4]=>
  string(3) "e:5"
  [5]=>
  string(3) "f:6"
  [6]=>
  string(3) "g:7"
}

Как я могу вместо этого создать такой массив?:

array(7) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  string(1) "2"
  ["c"]=>
  string(1) "3"
  ["d"]=>
  string(1) "4"
  ["e"]=>
  string(1) "5"
  ["f"]=>
  string(1) "6"
  ["g"]=>
  string(1) "7"
}

Ответы:


1

Это должно работать:

$arr = array();
$d = explode(',', $string);
for($d as $item){
   list($key,$value) = explode(':', $item);
   $arr[$key] = $value;
}
13.11.2012
  • получил эту ошибку Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная T_VARIABLE, ожидание ';' в C:\xampp\htdocs\Colosus\modul\barang\explode.php в строке 19 13.11.2012
  • @Wawan Думаю, мне нужно посмотреть на ваш фактический код, предположив, что где-то отсутствует ; или случайная скобка. 13.11.2012

  • 2

    Это простое решение с использованием циклов:

    $string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
    $pairs = explode(',', $string);
    $a = array();
    foreach ($pairs as $pair) {
        list($k,$v) = explode(':', $pair);
        $a[$k] = $v;
    }
    var_export($a);
    

    Вы также можете сделать это (в PHP >= 5.3) более функциональным способом:

    $string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
    $pairs = explode(',', $string);
    $items = array_map(
        function($e){
            return explode(':', $e);
        },
        $pairs
    );
    $a = array_reduce(
        $items,
        function(&$r, $e) {
            $r[$e[0]] = $e[1];
            return $r;
        },
        array()
    );
    
    var_export($a);
    
    13.11.2012

    3
  • $array должен быть инициализирован первым $array = array(); перед foreach 13.11.2012
  • @Gtx PHP обрабатывает это без ошибок, хотя я согласен с тем, что он должен быть инициализирован 13.11.2012
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..