Подтвердить что ты не робот

Explode() в пару $key => $value

У меня есть это:

$strVar = "key value";

И я хочу получить его в этом:

array('key'=>'value')

Я попробовал это с explode(), но это дает мне следующее:

array('0' => 'key',
      '1' => 'value')

Исходный $strVar уже является результатом взорванной строки, и я перебираю все значения результирующего массива.

4b9b3361

Ответ 1

Не верьте, что это возможно в одной операции, но это должно сделать трюк:

list($k, $v) = explode(' ', $strVal);
$result[ $k ] = $v;

Ответ 2

$strVar = "key value";
list($key, $val) = explode(' ', $strVar);

$arr= array($key => $val);

Edit: Моя ошибка, использовала раскол вместо того, чтобы взорваться, но:

Функция

split() была DEPRECATED с PHP 5.3.0. Опираясь на это особенность сильно обескуражена

Ответ 3

Вы можете зацикливать каждую вторую строку:

$how_many = count($array);
for($i = 0; $i <= $how_many; $i = $i + 2){
  $key = $array[$i];
  $value = $array[$i+1];
  // store it here
}

Ответ 4

$my_string = "key0:value0,key1:value1,key2:value2";

$convert_to_array = explode(',', $my_string);

for($i=0; $i < count($convert_to_array ); $i++){
    $key_value = explode(':', $convert_to_array [$i]);
    $end_array[$key_value [0]] = $key_value [1];
}

Вывод массива

$end_array(
            [key0] => value0,
            [key1] => value1,
            [key2] => value2
            )

Ответ 5

Попробуйте это

$str = explode(" ","key value");
$arr[$str[0]] = $str[1];

Ответ 6

$pairs = explode(...);
$array = array();
foreach ($pair in $pairs)
{
    $temp = explode(" ", $pair);
    $array[$temp[0]] = $temp[1];
}

Но это кажется очевидным, если вы, кажется, знаете массивы и explode. Таким образом, могут быть некоторые ограничения, которые вы нам не дали. Вы можете обновить свой вопрос, чтобы объяснить.

Ответ 7

Вы можете попробовать следующее:

$keys = array();
$values = array();

$str = "key value"; 
$arr = explode(" ",$str);

foreach($arr as $flipper){
   if($flipper == "key"){
      $keys[] = $flipper;
   }elseif($flipper == "value"){
      $values[] = $flipper;
   }
}

$keys = array_flip($keys);
// You can check arrays with
//print_r($keys);
//print_r($values);

foreach($keys as $key => $keyIndex){
  foreach($values as $valueIndex => $value){
       if($valueIndex == $keyIndex){
          $myArray[$key] = $value;
       }
  }
}

Я знаю, он кажется сложным, но он работает;)

Ответ 8

Еще одна строка:

parse_str(str_replace(' ', '=', $strVar), $array);

Ответ 9

Если в вашей строке указано более двух слов, используйте следующий код.

    $values = explode(' ', $strVar);

    $count = count($values);
    $array = [];

    for ($i = 0; $i < $count / 2; $i++) {
        $in = $i * 2;
        $array[$values[$in]] = $values[$in + 1];
    }

    var_dump($array);

$array содержит нечетно расположенное слово как key и равномерно расположенное слово $value соответственно.

Ответ 10

Если у вас длинный список пар ключ-значение, разделенных одним и тем же символом, который также ограничивает ключ и значение, эта функция выполняет трюк.

function extractKeyValuePairs(string $string, string $delimiter = ' ') : array
{
    $params = explode($delimiter, $string);

    $pairs = [];
    for ($i = 0; $i < count($params); $i++) {
        $pairs[$params[$i]] = $params[++$i];
    }

    return $pairs;
}

Пример:

$pairs = extractKeyValuePairs('one foo two bar three baz');

[
    'one'   => 'foo',
    'two'   => 'bar',
    'three' => 'baz',
]

Ответ 11

Одиночная строка для ya:

$arr = array(strtok($strVar, " ") => strtok(" "));

Ответ 12

Я нашел другой простой способ сделать это:

$a = array_flip (explode ('', $strVal);