【问题标题】:Converting array with equals to associative array将具有等于的数组转换为关联数组
【发布时间】:2017-11-01 20:16:50
【问题描述】:

我在 PHP 中有以下数组

array(
  "lat = -0.47023808202763651",
  "lon = -163.04466494518647",
  "alt = 4263.5330573538085",
  "hgt = 0.382990122",
  "nrm = 0.0816367865,0.996595144,-0.0115590692",
  "rot = 0.34263891,-0.470143765,0.647551596,0.492179215",
  "CoM = 0,0,0",
  "stg = 0"
)

如何将其转换为关联数组,其中键是等号之前的内容,值是等号之后的内容:

array(
  "lat" => "-0.47023808202763651",
  "lon" => "-163.04466494518647",
  "alt" => "4263.5330573538085",
  "hgt" => "0.382990122",
  "nrm" => "0.0816367865,0.996595144,-0.0115590692",
  "rot" => "0.34263891,-0.470143765,0.647551596,0.492179215",
  "CoM" => "0,0,0",
  "stg" => "0"
)

我在这里看到了遍历数组:Explode a string to associative array 但是一直无法使用这种方法进行转换...

有什么建议吗?示例代码?

【问题讨论】:

  • 一个 foreach 循环,在 `=` 上爆炸并从两个部分构建一个新数组?
  • 为什么数组遍历示例不起作用?它几乎是你将如何做到的。只需 trim() 您的值,因此您的键中不会出现偷偷摸摸的空格。
  • “但无法使用此方法进行转换” - 请告诉我们您尝试了什么以及发生了什么,我们可以从那里得到它。
  • $newArray = []; foreach($oldArray as $element) {list($key, $value) = explode(' = ', $element); $newArray[$key] = $value; }
  • 这行得通!谢谢马克!

标签: php arrays associative-array


【解决方案1】:

你需要循环数组并分解它并创建一个带有键和值的新数组

$new_array = array();
foreach( $array as $value ){
    list($key,$value)=explode('=',$value);
    $new_array[trim($key)] = trim($value);
}
print_r($new_array);

输出:

Array
(
    [lat] => -0.47023808202763651
    [lon] => -163.04466494518647
    [alt] => 4263.5330573538085
    [hgt] => 0.382990122
    [nrm] => 0.0816367865,0.996595144,-0.0115590692
    [rot] => 0.34263891,-0.470143765,0.647551596,0.492179215
    [CoM] => 0,0,0
    [stg] => 0
)

【讨论】:

    【解决方案2】:
            function splitStringsToArray($array) {
                $need = [];
                foreach ($array as $v) {
                    list($key, $value) = explode(' = ', $v);
                    $need[$key] = $value;
                }
    
                return $need;
            }
    
            $arrayYouHave = array(
                "lat = -0.47023808202763651",
                "lon = -163.04466494518647",
                "alt = 4263.5330573538085",
                "hgt = 0.382990122",
                "nrm = 0.0816367865,0.996595144,-0.0115590692",
                "rot = 0.34263891,-0.470143765,0.647551596,0.492179215",
                "CoM = 0,0,0",
                "stg = 0"
            );
    
            $arrayYouNeed = splitStringsToArray($arrayYouHave);
    
            print_r($arrayYouHave, $arrayYouNeed);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2017-01-10
      • 2011-05-08
      • 2020-04-23
      相关资源
      最近更新 更多