PHP数组值到数组ID

时间:2018-08-16 18:45:59

标签: php wordpress multidimensional-array

我正在尝试将WP函数get_page_title与page_ID一起使用。

它看起来像这样。

FROM

array (
    0 => 'Home',
    1 => 101,
    2 => 'About',
    3 => 102,
    4 => 'Portfolio',
    5 => 103,
    6 => 'Price',
    7 => 104,
    8 => 'Contact',
    9 => 105,
)

array (
    '101' => 'Home',
    '102' => 'About',
    '103' => 'Portfolio',
    '104' => 'Price',
    '105' => 'Contact',
)

示例

array (
    'page_ID' => 'page_title',
)

4 个答案:

答案 0 :(得分:0)

假设您的键始终在奇数索引中,并且值始终在偶数索引中,并且每个键的编号相同:

$data = array (
    0 => 'Home',
    1 => 101,
    2 => 'About',
    3 => 102,
    4 => 'Portfolio',
    5 => 103,
    6 => 'Price',
    7 => 104,
    8 => 'Contact',
    9 => 105,
);

$values = array_filter($data, function($key) {
    return $key % 2 == 0;
}, ARRAY_FILTER_USE_KEY);
$keys = array_filter($data, function($key) {
    return $key % 2 == 1;
}, ARRAY_FILTER_USE_KEY);


var_dump(array_combine($keys, $values));

输出:

array (size=5)
    101 => string 'Home' (length=4)
    102 => string 'About' (length=5)
    103 => string 'Portfolio' (length=9)
    104 => string 'Price' (length=5)
    105 => string 'Contact' (length=7)

或者,您可以排序然后装入阵列

//the string will be in the beggining and the numbers at the end
sort($data, SORT_NUMERIC); //important SORT_NUMERIC to not mix the string values

$data = array_combine(array_slice($data, count($data)/2), array_slice($data, 0, count($data)/2));

答案 1 :(得分:0)

这可能是矫kill过正,但是如果ID和标题的数量始终相同,并且标题不能以数字开头:

$array = array_combine(preg_grep('/^\d+/', $array), preg_grep('/^[a-z]+/i', $array));

答案 2 :(得分:0)

我在假设别人在数组中总是有偶数个元素并且以value / key / value / key / etc的顺序进行排列时使用相同的假设,但这是一个很干净的选择: / p>

$output = [];

while ($data && ($v = array_shift($data)) && ($k = array_shift($data))) {
  $output[$k] = $v;
}

请参见https://3v4l.org/GvGQU

答案 3 :(得分:0)

这是没有array_filter和array_shift函数的另一种实现方法:

$i = 0;

while ($i < count($arr)) {
    $val = $arr[$i++];
    $key = $arr[$i++];
    empty($key) ?: $new_arr[$key] = $val;
}

https://3v4l.org/cSYcc