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中运行。