我有一个我从其他来源检索的数组,键是预设字符串。我使用$ devices作为我要检索的数组的一个例子。
我想用$ new_keys的1比1替换$ devices的键名。下面的代码是我到目前为止,但我没有得到我想要的结果?
+-------------------+-----------------+---------------------+-----------------+
| url | counttotal_urls | countduplicate_urls | Unique_urls |
+-------------------+-----------------+---------------------+-----------------+
| ht,ha,hb,ha|hc|hy | 6 | 1 | |ha|hb|hc|ht|hy |
| ht,hb,hb|hb|hx|hx | 6 | 3 | |hb|ht|hx |
| hy,hx,hm|hm,hy | 5 | 2 | |hm|hx|hy |
| hz,hy,hx,hm|hm,hy | 6 | 2 | |hm|hx|hy|hz |
+-------------------+-----------------+---------------------+-----------------+
谢谢!
答案 0 :(得分:2)
看看PHP函数array_combine()
。它可以满足您的需求:
$devices = array('uniqueId' => '1234','status' => 'online','lastUpdate' => time(),'phone' => '1234','model' => 'test','contact' => 'admin');
$new_keys = array('IMEI','Status','Last Update','Phone','Model','Contact');
$fixed = array_combine($new_keys, array_values($devices));
// print_r($fixed);
输出:
Array
(
[IMEI] => 1234
[Status] => online
[Last Update] => 1490179692
[Phone] => 1234
[Model] => test
[Contact] => admin
)
答案 1 :(得分:1)
for
将替换密钥匹配的值,而不是密钥本身。
您可能最好创建一个新数组并在循环中合并这两个数组。您需要将foreach
替换为$devices
,并且您也无法使用$i
引用(我不这么认为)您的$devices = array('uniqueId' => '1234','status' => 'online','lastUpdate' => time(),'phone' => '1234','model' => 'test','contact' => 'admin'
$new_keys = array('IMEI','Status','Last Update','Phone','Model','Contact');
$new_devices = array();
$i = 0;
foreach($devices as $key => $value) {
$new_devices[$new_keys[$i]] = $value;
$i++;
}
数组。< / p>
{{1}}
我不确定你在这里做了什么,但根据他们的位置使用这种新老钥匙的一对一关系,就是在寻找麻烦!
答案 2 :(得分:0)
$newArr = array();
for ($i = 0; $i < count($devices) - 1; $i++) {
$newArr[$new_keys[$i]]=$devices[$i];
}
$device = $newArr;
答案 3 :(得分:0)
试试这个,
$arr = array_combine($new_keys,$devices);
print_r($arr);
这是source表示通过使用一个数组作为键来创建一个数组而另一个数组用于其值来创建一个数组