首页 > 解决方案 > 数组 - 只保留键“别名”以“a”开头的条目

问题描述

我刚刚意识到我并不熟悉 php-arrays 的术语。所以我希望你们能得到我想要达到的目标。

我有一个这样的数组,其中包含更多“条目”:

Array ( 
    [id] => 385
    [tag] => Aya Cissoko (Frankreich)
    [label] => Aya Cissoko (Frankreich)
    [alias] => aya-cissoko-(frankreich)
    [group] => 4
    [rank] => 266
    [group_id] => 4
    [group_name] => Künstler
    [group_alias] => kuenstler
    [group_field_type] => tagger-field-tags
    [group_allow_new] => 1
    [group_remove_unused] => 0
    [group_allow_blank] => 1
    [group_allow_type] => 1
    [group_show_autotag] => 0
    [group_hide_input] => 0
    [group_tag_limit] => 0
    [group_show_for_templates] => 3,36,44
    [group_place] => below-content
    [group_position] => 3
    [group_description] => Vor- und Nachname (Land) - Beispiel: "Eli Abeke (D)"
    [group_in_tvs_position] => 9999
    [group_as_radio] => 0
    [group_sort_field] => alias
    [group_sort_dir] => asc
    [group_show_for_contexts] => sa
    [cnt] => 1
)
Array ( 
    [id] => 59
    [tag] => Babangoni wawa Chisale (Malawi)
    [label] => Babangoni wawa Chisale (Malawi)
    [alias] => babangoni-wawa-chisale-(malawi)
    [group] => 4
    [rank] => 18
    [group_id] => 4
    [group_name] => Künstler
    [group_alias] => kuenstler
    [group_field_type] => tagger-field-tags
    [group_allow_new] => 1
    [group_remove_unused] => 0
    [group_allow_blank] => 1
    [group_allow_type] => 1
    [group_show_autotag] => 0
    [group_hide_input] => 0
    [group_tag_limit] => 0
    [group_show_for_templates] => 3,36,44
    [group_place] => below-content
    [group_position] => 3
    [group_description] => Vor- und Nachname (Land) - Beispiel: "Eli Abeke (D)"
    [group_in_tvs_position] => 9999
    [group_as_radio] => 0
    [group_sort_field] => alias
    [group_sort_dir] => asc
    [group_show_for_contexts] => sa
    [cnt] => 1
)

我想保留所有条目,其中“别名”以“a”开头并摆脱数组的其余部分,但保留数组的“结构”,因为我需要与每个相关的所有其他键和值“入口”。

我怎样才能完成这项工作?

标签: phparrays

解决方案


您可以通过将条目array_filter的第一个字母与以下内容进行比较来从数组中删除不需要的元素:aliasa

$out = array_filter($array, function ($value) {
    return $value['alias'][0] == 'a';
});

如果您想要不区分大小写的比较(因此它也匹配A),请使用strtolower

$out = array_filter($array, function ($value) {
    return strtolower($value['alias'][0]) == 'a';
});
print_r($out);

3v4l.org 上的演示


推荐阅读