【问题标题】:Remove from multidimensional array if value partially matches如果值部分匹配,则从多维数组中删除
【发布时间】:2015-04-22 23:32:36
【问题描述】:

我写了一个多语言的 wordpress 主页。我需要将所有语言加载到数组中,然后检测用户语言,然后根据用户语言从数组中删除其他语言。

我想对数组进行部分检查以查看“标题”是否包含 _DE 或 _ES,然后根据结果从数组中删除一个或另一个。

目前为止

数据

array(2) { 
[1]=> array(3) { ["order"]=> string(1) "1" ["title"]=> string(9) "Slider_ES" ["id"]=> string(3) "500" } 

[2]=> array(3) { ["order"]=> string(1) "2" ["title"]=> string(11) "Slider_DE" ["id"]=> string(3) "493" } 

} 

逻辑

$current_language = get_locale(); // Wordpress function which returns either es_ES or de_DE codes

if ($current_language == es-ES) {

    foreach ($array as $key => $item) {
        if ($item['title'] === '_DE') {
            unset($array[$key]);
        }
    }

} else {

    foreach ($array as $key => $item) {
        if ($item['title'] === '_ES') {
            unset($array[$key]);
        }
    }

}

我错过了什么?

【问题讨论】:

  • substr($item['title'], -3) === '_ES'
  • @RuslanasBalčiūnas 这不会检查整个字符串是否包含子字符串,只需从字符串中剪切最后 3 个字符,然后进行比较...
  • 这不是你的数据模式吗?你可以使用strstrstrpos甚至preg_match

标签: php wordpress multidimensional-array


【解决方案1】:

您可以使用 strpos 函数来查找一个字符串在另一个字符串中的出现,如下所示:

if (strpos($item['title'],'_DE') !== false) {
    unset($array[$key]);
}

【讨论】:

  • 就是这样。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
相关资源
最近更新 更多