PHP中关联数组的转换

PHP中关联数组的转换,php,Php,我正在循环中获取数组 Array ( [name] => Birthday ) Array ( [name] => Marriage Anniversary ) 现在我想用下面的格式创建动态。我该怎么做 return [['value' => 'birthday1', 'label' => __('Birthday1')], ['value' => 'wedding_anniversary', 'label' => __('Marria

我正在循环中获取数组

Array
(
     [name] => Birthday
 )

Array
(
    [name] => Marriage Anniversary
)
现在我想用下面的格式创建动态。我该怎么做

return [['value' => 'birthday1', 'label' => __('Birthday1')], ['value' => 'wedding_anniversary', 'label' => __('Marriage Anniversery')]];

这将是一种可能的办法:

<?php
$input = [
    ['name' => 'Birthday'],
    ['name' => 'Marriage Anniversary']
];
$output = [];
array_walk($input, function($set) use (&$output) {
    $entry = $set['name'];
    $value = preg_replace('/\s+/', '_', strtolower($entry));
    $label = $entry;
    $output[] = [
        'value' => $value,
        'label' => $label
    ];
});
print_r($output);

您的问题有点不清楚,您建议将其中一个值(“birthday1”)拖在后面。。。如果您确实需要某种计数器来记录值的出现情况,那么下面是上述代码的修改版本:

<?php
$input = [
    ['name' => 'Birthday'],
    ['name' => 'Marriage Anniversary'],
    ['name' => 'Birthday']
];
$output = [];
$catalog = [];
array_walk($input, function($set) use (&$catalog, &$output) {
    $entry = $set['name'];
    $value = preg_replace('/\s+/', '_', strtolower($entry));
    $catalog[$value] = isset($catalog[$value]) ? ++$catalog[$value] : 1;

    $label = $entry;
    $output[] = [
        'value' => $value . $catalog[$value],
        'label' => $label
    ];
});
print_r($output);

我们应该如何知道动态值
生日1
结婚纪念日
?这些是否存在于循环数组中?另外,请显示您的循环代码。
<?php
$input = [
    ['name' => 'Birthday'],
    ['name' => 'Marriage Anniversary'],
    ['name' => 'Birthday']
];
$output = [];
$catalog = [];
array_walk($input, function($set) use (&$catalog, &$output) {
    $entry = $set['name'];
    $value = preg_replace('/\s+/', '_', strtolower($entry));
    $catalog[$value] = isset($catalog[$value]) ? ++$catalog[$value] : 1;

    $label = $entry;
    $output[] = [
        'value' => $value . $catalog[$value],
        'label' => $label
    ];
});
print_r($output);
Array
(
    [0] => Array
        (
            [value] => birthday1
            [label] => Birthday
        )

    [1] => Array
        (
            [value] => marriage_anniversary1
            [label] => Marriage Anniversary
        )

    [2] => Array
        (
            [value] => birthday2
            [label] => Birthday
        )

)