例如我有一个像
这样的数组$keys = array(
'host',
'port' => 3306,
'database',
'username',
'password'
);
在PHP
中,它看起来像这样
array(5) {
[0]=>
string(4) "host"
["port"]=>
int(3306)
[1]=>
string(8) "database"
[2]=>
string(8) "username"
[3]=>
string(8) "password"
}
翻转它的最佳方式是什么呢?
array(
'host' => NULL,
'port' => 3306,
'database' => NULL,
'username' => NULL,
'password' => NULL
)
基本上我只需要翻转那些没有值的元素(在这种情况下只有端口有)。
答案 0 :(得分:2)
可能会在代码下方根据您提到的问题进行操作。但它不是一个翻转。
$keys = array(
'host',
'port' => 3306,
'database',
'username',
'password'
);
foreach ($keys as $key => $val) {
if (is_int($key)) {
$keys[$val] = NULL;
unset($keys[$key]);
}
}
var_dump($keys);
答案 1 :(得分:0)
我想发布的另一个提议,因为我认为您患有the XY problem
<?php
$defaults= array(
'host' => null
'port' => 3306,
'database' => null,
'username' => null,
'password' => null
);
$customizations = array(
'host'=> 'localhost'
);
$params = array_merge($defaults, $customizations);
/* $params is now this:
array(
'host' => 'localhost'
'port' => 3306,
'database' => null,
'username' => null,
'password' => null
);
*/
答案 2 :(得分:0)
试试这个:
$keys = array(
'host',
'port' => 3306,
'database',
'username',
'password'
);
$counter = 0;
$a = [];
foreach ($keys as $key => $value) {
if($key == $counter) {
$a[$value] = NULL;
$counter++;
}
else
{
$a[$key] = $value;
}
}
print_r($a);