【问题标题】:How can I get in_array() to work with get_option()?如何让 in_array() 与 get_option() 一起工作?
【发布时间】:2014-05-01 20:24:47
【问题描述】:

我的管理设置中有两个自定义字段,允许我输入两组有效的邮政编码(“woocommerce_local_delivery_zone_a”和“woocommerce_local_delivery_zone_b”)。

我无法弄清楚为什么这段代码不起作用:

    $codes_a = get_option( 'woocommerce_local_delivery_zone_a' );
$codes_b = get_option( 'woocommerce_local_delivery_zone_b' );

if ( in_array( "55410", array( $codes_a ) )) {
echo "Codes A";
} 

if ( in_array( "55410", array( $codes_b ) )) {
        echo "Codes B";
} 

如果我回显$codes_a$codes_b(在“if”语句之外),则邮政编码字符串会在页面上返回。如果我将该字符串直接输入变量位于if (in_array( "55410", array( NUMBERS HERE ))) 中的位置,则我试图回显的文本(Codes ACodes B)有效。

我还尝试将 array( get_option( 'field_name')) 直接放在 if 语句中,但这也没有做任何事情。 in_array 是否不适用于获取管理员自定义字段?

【问题讨论】:

  • 当你做var_dump($codes_a);时你会得到什么?
  • 我假设数组是序列化的。也许您可以unserialize() 并将其设置为变量。

标签: php wordpress woocommerce


【解决方案1】:

如果$codes_a 是这样的字符串:08847,032434,35545 那么你需要使用explode() 将它变成一个数组。我怀疑你真正想要的是这个:

if ( in_array( "55410", explode( ',', $codes_a ) ) {
    echo "Codes A";
}

【讨论】:

  • 谢谢!做到了。使用 explode() 似乎违反直觉,因为它在我直接插入数字时起作用,例如 if ( in_array( "55410", array( 08847,03243,35545,55410) ))
  • 是的,这会起作用,但由于你的变量是一个字符串,它就像在做array('008847,03243,35545,55410')。注意引号。你实际上是在用这种方式创建一个只有一个元素的数组。
猜你喜欢
  • 2023-02-02
  • 2017-06-25
  • 2020-12-13
  • 2012-02-02
  • 2011-02-22
  • 2013-03-24
  • 2016-07-22
  • 2011-08-17
  • 2021-12-18
相关资源
最近更新 更多