Ответ 1
Не верьте, что это возможно в одной операции, но это должно сделать трюк:
list($k, $v) = explode(' ', $strVal);
$result[ $k ] = $v;
У меня есть это:
$strVar = "key value";
И я хочу получить его в этом:
array('key'=>'value')
Я попробовал это с explode(), но это дает мне следующее:
array('0' => 'key',
'1' => 'value')
Исходный $strVar уже является результатом взорванной строки, и я перебираю все значения результирующего массива.
Не верьте, что это возможно в одной операции, но это должно сделать трюк:
list($k, $v) = explode(' ', $strVal);
$result[ $k ] = $v;
$strVar = "key value";
list($key, $val) = explode(' ', $strVar);
$arr= array($key => $val);
Edit: Моя ошибка, использовала раскол вместо того, чтобы взорваться, но:
Функцияsplit() была DEPRECATED с PHP 5.3.0. Опираясь на это особенность сильно обескуражена
Вы можете зацикливать каждую вторую строку:
$how_many = count($array);
for($i = 0; $i <= $how_many; $i = $i + 2){
$key = $array[$i];
$value = $array[$i+1];
// store it here
}
$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
)
Попробуйте это
$str = explode(" ","key value");
$arr[$str[0]] = $str[1];
$pairs = explode(...);
$array = array();
foreach ($pair in $pairs)
{
$temp = explode(" ", $pair);
$array[$temp[0]] = $temp[1];
}
Но это кажется очевидным, если вы, кажется, знаете массивы и explode
. Таким образом, могут быть некоторые ограничения, которые вы нам не дали. Вы можете обновить свой вопрос, чтобы объяснить.
Вы можете попробовать следующее:
$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;
}
}
}
Я знаю, он кажется сложным, но он работает;)
Еще одна строка:
parse_str(str_replace(' ', '=', $strVar), $array);
Если в вашей строке указано более двух слов, используйте следующий код.
$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
соответственно.
Если у вас длинный список пар ключ-значение, разделенных одним и тем же символом, который также ограничивает ключ и значение, эта функция выполняет трюк.
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',
]
Одиночная строка для ya:
$arr = array(strtok($strVar, " ") => strtok(" "));
Я нашел другой простой способ сделать это:
$a = array_flip (explode ('', $strVal);