Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP字符串更改为数组,然后将数组更改为重新创建数组_Php_Arrays - Fatal编程技术网

将PHP字符串更改为数组,然后将数组更改为重新创建数组

将PHP字符串更改为数组,然后将数组更改为重新创建数组,php,arrays,Php,Arrays,我有一个字符串: minprice_0_maxprice_1000_brand_Nike_brand_Puma 我试着用这段代码把它转换成一个数组 function urlToArray($str){ $array = explode('_',$str); if(!empty($array)){ foreach($array as $num=>$val){ if($num%2 == 0 || $num == 0){

我有一个字符串:

minprice_0_maxprice_1000_brand_Nike_brand_Puma

我试着用这段代码把它转换成一个数组

function urlToArray($str){
    $array = explode('_',$str);

    if(!empty($array)){
        foreach($array as $num=>$val){
            if($num%2 == 0 || $num == 0){
                $key[] = $val;
            }else{
                $value[] = $val;
            }
        }
        $page_r = array_combine($key,$value);
    }else{
        $page_r = array();
    }
    return $page_r;
}
但后来我遇到了一个问题

Array(
[minprice] => 0
[maxprice] => 1000
[brand] => Nike)
它不能有双钥匙。如何获得此结果的最佳解决方案

Array(
[minprice] => 0
[maxprice] => 1000
[brand] => Array (0=>[Nike]1=>[Puma])
高级版谢谢您尝试以下内容:

$string = 'minprice_0_maxprice_1000_brand_Nike_brand_Puma';

$minprice = explode('minprice_', $string);
$minprice = $minprice[1];
$minprice = explode('_', $minprice);
$minprice = $minprice[0];
echo $minprice; // 0

$maxprice = explode('maxprice_', $string);
$maxprice = $maxprice[1];
$maxprice = explode('_', $maxprice);
$maxprice = $maxprice[0];
echo $maxprice; // 1000

$brand = explode('_brand_', $string);
array_shift($brand);
echo '<pre>'; print_r($brand);
试试这个:


这就是我需要的。谢谢
Array
(
    [0] => Nike
    [1] => Puma
)
function url_to_array($url) {
  $segments = explode('_', $url);
  $array = array();
  $temp_key = null;
  foreach ($segments as $index => $segment) {
    if ($index % 2 == 0) {
      $temp_key = $segment;
    } else {
      if (array_key_exists($temp_key, $array)) {
        if (gettype($array[$temp_key]) == 'string') {
          $array[$temp_key] = array($array[$temp_key]);
        }
        $array[$temp_key][] = $segment;
      } else {
        $array[$temp_key] = $segment;
      }
    }
  }
  return $array;
}