从数组中提取值以替换默认的数字键


Extract values from array in order to replace the default numerical key

我在数据库中有一些数据,格式如下:

Description~Level||Description~Level||

我想把它转换成一个数组,其中description是Key&调平数组的值。

$perso1 = explode('||', $myLevels['perso']);
$perso = array_slice($perso1, 0 , -1);

到目前为止,我做了这个,它返回:

Array ( [0] => ffghtr~54644
        [1] => ffghtr~54644
        [2] => ffghtr~54644
        [3] => ffghtr~54644
        [4] => ffghtr~54644
        [5] => ffghtr~54644 ) 

现在我找不到用我的描述替换数组键(0,1,2等)的方法。

知道吗?

事先非常感谢。

$tmp = explode('||', $myLevels['perso']);
foreach ($tmp as $str) {
    // this check is to remove empty elements from the list .. 
    // because your list ends with "||" there is a last empty element
    if(strpos($str, "~") === false) continue;
    // split by "~" into $key and $value
    list($key, $value) = explode("~", $str, 2);
    $result[$key] = $value;
}
print_r($result);

请注意,在发布的示例中,您总是有相同的密钥:"ffghtr"。

因为数组键是唯一的,所以每次迭代都会替换这个键的内容,结果只有最后一个元素。

$array = Array ( [0] => ffghtr~54644
    [1] => ffghtr~54644
    [2] => ffghtr~54644
    [3] => ffghtr~54644
    [4] => ffghtr~54644
    [5] => ffghtr~54644 ) 
$new_array = new Array();
foreach($array as $a)
     $new_array[(split('~',$a))[0]] = (split('~',$a))[1]

所以new_array应该是您想要的形式。事实上,我没有测试代码,但你明白了。请注意,您发布的数组始终具有相同的关键字:ffghtr。

所以你最终会得到一个只有一个元素的新数组。。。