I have this:
$strVar = \"key value\";
And I want to get it in this:
array(\'key\'=>\'value\')
I tried
If you have more values in a string, you can use array_walk()
to create an new array instead of looping with foreach()
or for()
.
I'm using an anonymous function which only works with PHP 5.3+.
// your string
$strVar = "key1 value1&key2 value2&key3 value3";
// new variable for output
$result = array();
// walk trough array, add results to $result
array_walk(explode('&', $strVar), function (&$value,$key) use (&$result) {
list($k, $v) = explode(' ', $value);
$result[$k] = $v;
});
// see output
print_r($result);
This gives:
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
$pairs = explode(...);
$array = array();
foreach ($pair in $pairs)
{
$temp = explode(" ", $pair);
$array[$temp[0]] = $temp[1];
}
But it seems obvious providing you seem to know arrays and explode
. So there might be some constrains that you have not given us. You might update your question to explain.
list($array["min"], $array["max"]) = explode(" ", "key value");
I am building an application where some informations are stored in a key/value string.
tic/4/tac/5/toe/6
Looking for some nice solutions to extract data from those strings I happened here and after a while I got this solution:
$tokens = explode('/', $token);
if (count($tokens) >= 2) {
list($name, $val) = $tokens;
$props[$name] = $val;
}
if (count($tokens) >= 4) {
list(, , $name, $val) = $tokens;
$props[$name] = $val;
}
if (count($tokens) >= 6) {
list(, , , , $name, $val) = $tokens;
$props[$name] = $val;
}
// ... and so on
freely inspired by smassey's solution
This snippet will produce the following kinds of arrays:
$props = [
'tic' => 4,
];
or
$props = [
'tic' => 4,
'tac' => 5,
];
or
$props = [
'tic' => 4,
'tac' => 5,
'toe' => 6,
];
my two cents
$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];
}
Outputs array
$end_array(
[key0] => value0,
[key1] => value1,
[key2] => value2
)
Another single line:
parse_str(str_replace(' ', '=', $strVar), $array);