Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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,我想将数组的特定值设置为它的键,假设我有如下数组: $temp = [0] => Array ( [type] => 1 [hash_id] => [requested_user_amount] => 7250.88 [requested_user_id] => 9 [requested_user_rate] => 498

我想将数组的特定值设置为它的键,假设我有如下数组:

$temp =  [0] => Array
        (
            [type] => 1
            [hash_id] => 
            [requested_user_amount] => 7250.88
            [requested_user_id] => 9
            [requested_user_rate] => 49800
            [requested_user_qty] => 0.1456

        )

    [1] => Array
        (
            [type] => 1
            [hash_id] => 
            [requested_user_amount] => 64740
            [requested_user_id] => 12
            [requested_user_rate] => 49800
            [requested_user_qty] => 1.3
        )
    [2] => Array
        (
            [type] => 1
            [hash_id] => 
            [requested_user_amount] => 5000
            [requested_user_id] => 17
            [requested_user_rate] => 49800
            [requested_user_qty] => 0.100401606
      )
我想将
请求的用户id
设置为数组键

我找到了一个如下所示的解决方案

 array_column($temp, null, 'requested_user_id'); 
输出:

[9] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 7250.88
                [requested_user_id] => 9
                [requested_user_rate] => 49800
                [requested_user_qty] => 0.1456

            )

        [12] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 64740
                [requested_user_id] => 12
                [requested_user_rate] => 49800
                [requested_user_qty] => 1.3
            )
        [17] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 5000
                [requested_user_id] => 17
                [requested_user_rate] => 49800
                [requested_user_qty] => 0.100401606
          )
array_map(function($element){return $element;}, $temp,'requested_user_id');
它会给出我想要的精确输出。但问题是函数
array\u column
需要PHP5.5,而我的服务器是5.4

通过搜索web,我发现
array\u map()
array\u column()
的替代函数,我也尝试过,但没有给出相同的输出

数组\u映射代码:

[9] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 7250.88
                [requested_user_id] => 9
                [requested_user_rate] => 49800
                [requested_user_qty] => 0.1456

            )

        [12] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 64740
                [requested_user_id] => 12
                [requested_user_rate] => 49800
                [requested_user_qty] => 1.3
            )
        [17] => Array
            (
                [type] => 1
                [hash_id] => 
                [requested_user_amount] => 5000
                [requested_user_id] => 17
                [requested_user_rate] => 49800
                [requested_user_qty] => 0.100401606
          )
array_map(function($element){return $element;}, $temp,'requested_user_id');

如何在数组映射中将值作为键传递,或者是否可以使用其他函数?

您可以这样做,在创建时使用
$temp
数组创建一个新数组 在该数组中,使用
请求的用户id
作为键

$data = array();

foreach($temp as $row){
    $data[$row['requested_user_id']] = $row;
}

echo "<pre>";
print_r($data);
echo "</pre>";

您可以这样做,在创建时使用
$temp
数组创建一个新数组 在该数组中,使用
请求的用户id
作为键

$data = array();

foreach($temp as $row){
    $data[$row['requested_user_id']] = $row;
}

echo "<pre>";
print_r($data);
echo "</pre>";
像这样使用
array\u map()

<?php
$temp =  array(array
        (
            'type' => 1,
            'hash_id' =>null,
            'requested_user_amount' => 7250.88,
            'requested_user_id' => 9,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 0.1456

        ),
        array
        (
            'type' => 1,
            'hash_id' => null,
            'requested_user_amount' => 64740,
            'requested_user_id' => 12,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 1.3
        ),
         array
        (
            'type' => 1,
            'hash_id' =>null,
            'requested_user_amount' => 5000,
            'requested_user_id' => 17,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 0.100401606
        )
        );
$array = array_map(function($temp){
            return array(
                $temp['requested_user_id'] => $temp
            );
        }, $temp);
echo json_encode($array);
下面是演示:

[{"9":{"type":1,"hash_id":null,"requested_user_amount":7250.88,"requested_user_id":9,"requested_user_rate":49800,"requested_user_qty":0.1456}},{"12":{"type":1,"hash_id":null,"requested_user_amount":64740,"requested_user_id":12,"requested_user_rate":49800,"requested_user_qty":1.3}},{"17":{"type":1,"hash_id":null,"requested_user_amount":5000,"requested_user_id":17,"requested_user_rate":49800,"requested_user_qty":0.100401606}}]
像这样使用
array\u map()

<?php
$temp =  array(array
        (
            'type' => 1,
            'hash_id' =>null,
            'requested_user_amount' => 7250.88,
            'requested_user_id' => 9,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 0.1456

        ),
        array
        (
            'type' => 1,
            'hash_id' => null,
            'requested_user_amount' => 64740,
            'requested_user_id' => 12,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 1.3
        ),
         array
        (
            'type' => 1,
            'hash_id' =>null,
            'requested_user_amount' => 5000,
            'requested_user_id' => 17,
            'requested_user_rate' => 49800,
            'requested_user_qty' => 0.100401606
        )
        );
$array = array_map(function($temp){
            return array(
                $temp['requested_user_id'] => $temp
            );
        }, $temp);
echo json_encode($array);
下面是演示:

[{"9":{"type":1,"hash_id":null,"requested_user_amount":7250.88,"requested_user_id":9,"requested_user_rate":49800,"requested_user_qty":0.1456}},{"12":{"type":1,"hash_id":null,"requested_user_amount":64740,"requested_user_id":12,"requested_user_rate":49800,"requested_user_qty":1.3}},{"17":{"type":1,"hash_id":null,"requested_user_amount":5000,"requested_user_id":17,"requested_user_rate":49800,"requested_user_qty":0.100401606}}]

是的,最后我得到了解决方案,array_walk()是一个函数,它可以帮助我看到下面的代码,这些代码提供了相同的输出,在我的情况下,我可以说是alternative或array_column():

代码:


是的,最后我得到了解决方案,array_walk()是一个函数,它可以帮助我看到下面的代码,这些代码提供了相同的输出,在我的情况下,我可以说是alternative或array_column():

代码:


只是把它扔出去,但是不可能升级到新版本的php吗?只是把它扔出去,但是不可能升级到更新版本的php吗?答案是Thansk,但如果可能的话,我希望它使用函数。答案是sk,但如果可能的话,我希望它使用函数possible@Codebrekers您需要将$temp更改为您的格式抱歉,它不起作用,那么输出将完全不同yours@Codebrekers我制作了demo test.php并运行了php test.php,它可以正常工作link@Codebrekers只需将代码另存为test.php,并使用php test.php命令运行它。我无法使php在JSFIDLE中运行。@Codebrekers您需要将$temp更改为您的格式抱歉,它不起作用,那么输出将完全不同yours@Codebrekers我制作了demo test.php并运行了php test.php,它可以正常工作link@Codebrekers只需将代码另存为test.php,并使用php test.php命令运行它。我无法使php在JSFIDLE中运行。