PHP 数组:索引数组与键控数组

发布于 2024-11-08 21:24:47 字数 799 浏览 3 评论 0原文

我有一个方法,fetch_widgets,可以从(MySQL)数据库获取小部件。我向它传递一个 $options 数组,这样我就可以有选择地添加 WHEREJOIN 子句、添加/删除列等。

例如:

    $options = array();
    $options[] = 'include_disabled';
    $options[] = 'include_tag_ids';
    $options['start_date'] = '2011-01-01';
    $options['end_date'] = '2011-01-31';

>fetch_widgets 我使用以下任一方式检查选项:

    if(array_key_exists('start_date',$options)) { ... }

或:

    if(in_array('include_tag_ids',$options)) { ... }

取决于选项是否被激活,只是存在(例如 include_disabled)或具有键和值(例如 <代码>结束日期)。

我遇到了困难,因为当 $options 数组包含键控值和非键控值时,我从 in_array 得到奇怪的结果。任何人都可以阐明这一点吗?

I have a method, fetch_widgets, that fetches widgets from the (MySQL) database. I pass it an $options array so I can selectively add WHERE and JOIN clauses, add/remove columns etc.

For example:

    $options = array();
    $options[] = 'include_disabled';
    $options[] = 'include_tag_ids';
    $options['start_date'] = '2011-01-01';
    $options['end_date'] = '2011-01-31';

In fetch_widgets I check for the options using either:

    if(array_key_exists('start_date',$options)) { ... }

or:

    if(in_array('include_tag_ids',$options)) { ... }

depending on whether or not the option is activated just be being present (e.g. include_disabled) or has a key and a value (e.g. end_date).

I'm running into difficulties because I'm getting strange results from in_array when the $options array contains keyed and non-keyed values. Can anyone shed any light on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

左耳近心 2024-11-15 21:24:47

如果您需要一致的行为,请勿混合/匹配键控和非键控数组。

相反,做这样的事情:

$options = array();
$options['include_disabled'] = true;
$options['include_tag_ids'] = true;
$options['start_date'] = '2011-01-01';
$options['end_date'] = '2011-01-31';

Don't mix/match keyed and non-keyed arrays if you need consistent behavior.

Instead, do something like this:

$options = array();
$options['include_disabled'] = true;
$options['include_tag_ids'] = true;
$options['start_date'] = '2011-01-01';
$options['end_date'] = '2011-01-31';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文