【问题标题】:Build multidimensional array from string naming key values in php从php中的字符串命名键值构建多维数组
【发布时间】:2020-10-29 13:22:52
【问题描述】:

所以我有这个问题,我从excel中提取一个具有这种结构的字符串:

89.356 87.54、45.34 98.254、45.2413 45.2146、98.23 35.647

我想构建一个具有以下结构的数组:

Array
(
    [0] => Array
        (
            ['first'] => 89.356 
            ['second'] => 87.54
        )

    [1] => Array
        (
            ['first'] => 45.34 
            ['second'] => 98.254
        )

    [2] => Array
        (
            ['first'] => 45.2413
            ['second'] => 45.2146
        )
)

我正在从 excel 中提取这些值并创建如下数组:

$polygons = $sheet->getCell("B".$row)->getValue();
        $ret = array_map (
            function ($) {return explode (' ', $);},
            explode (',', $polygons)
        );

但我不知道如何将键值 'first' 和 'second' 分配给数组。

【问题讨论】:

    标签: php arrays excel multidimensional-array key-value


    【解决方案1】:

    首先,只是指出您的代码会产生错误,因为您无法创建没有名称 ex 的变量。在您的代码中,您只有 $ 作为变量。

    这就是你的做法。

    $ret = array_map( function( $pol ) {
        $a = array_map( 'floatval', explode( ' ', $pol, 2 ) ); // 1
    
        return array_combine( ['first', 'second'], $a ); // 2
    }, explode( ',', $polygons ) );
    
    1. 从字符串转换为浮点数。
    2. 将第一个数组 (['first', 'second']) 作为键分配给第二个数组

    输出:var_dump($ret);

    array(3) {
        [0] => array(2) {
            ["first"] => float(89.356),
            ["second"] => float(89.356),
        },
        [1] => array(2) {
            ["first"] => float(45.34),
            ["second"] => float(98.254),
        },
        [2] => array(2) {
            ["first"] => float(45.2413),
            ["second"] => float(45.2146,
        },
    }
    

    【讨论】:

    • 嘿!非常感谢您的帮助,我对 php 完全陌生,事实上这是我尝试它的第一天,所以这真的很有帮助。
    • 感谢@mickmackusa 指出这一点。我只是假设它只包含 2 个浮点数。
    • @IsraelChavez 乐于助人。 :)
    • @mickmackusa 刚刚接受了答案,对不起!我不知道我必须这样做。
    猜你喜欢
    • 2014-10-07
    • 2017-12-15
    • 2023-03-09
    • 1970-01-01
    • 2015-09-15
    • 2023-03-21
    • 2016-09-18
    • 2016-02-09
    • 1970-01-01
    相关资源
    最近更新 更多