php - 在 PHP 中从线性数组创建关联数组

标签 php arrays

<分区>

我正在使用返回 JSON 数据的 Web 服务,当我使用 PHP 的 json_decode 解码时函数,给我一个如下所示的数组:

Array
(
 [0] => eBook
 [1] => 27
 [2] => Trade Paperback
 [3] => 24
 [4] => Hardcover
 [5] => 4
)

是否有一个 PHP 函数可以接受这个数组并将其组合成一个关联数组,其中每个其他元素都是一个键,后面的元素是它的值?我想提出的是以下内容:

Array
(
 [eBook] => 27
 [Trade Paperback] => 24
 [Hardcover] => 4
)

最佳答案

据我所知,没有内置函数可以执行此操作,但您可以使用如下函数:

function combineLinearArray( $arrayToSmush, $evenItemIsKey = true ) {
    if ( ( count($arrayToSmush) % 2 ) !== 0 ) {
        throw new Exception( "This array cannot be combined because it has an odd number of values" );
    }

    $evens = $odds = array();

    // Separate even and odd values
    for ($i = 0, $c = count($arrayToSmush); $i < $c; $i += 2) {
        $evens[] = $arrayToSmush[$i];
        $odds[] = $arrayToSmush[$i+1];
    }

    // Combine them and return
    return ( $evenItemIsKey ) ? array_combine($evens, $odds) : array_combine($odds, $evens);
}

您可以使用要组合成关联数组的数组和可选标志来调用它,该标志指示是使用偶数元素还是奇数元素作为键。

编辑:我将代码更改为仅使用一个 for 循环,而不是单独的循环来提取偶数和奇数值。

关于php - 在 PHP 中从线性数组创建关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264679/

相关文章:

php - CKEditor 未与 Sonata Formatter(Sonata Admin Bundle)一起显示

php - 数据库支持的 session 数据字段从 TEXT 更改为 LONGTEXT

java - 如何在Java中创建通用数组?

php - 将标签字符串转换为数组

c - 检查数组值是否为 NULL,即是否已设置

arrays - Powershell - 使用 Quest CMDlet 搜索和比较数组

php - 命名空间对性能有害吗? (PHP)

PHP:从字符串中删除 http://、http://www、https://、https://并获取域名和 TLD

php - Codeigniter 文件路径未正确存储在数据库中

javascript - 如何使用 Mongoose 检查字符串是否与数组的元素匹配