0

我很犹豫在这里问,但今天我对阵列面临的一个问题感到不知所措。

首先,我想指出我不是程序员也不是工程师(我来自设计分支并且自学成才)。

但是今天我被困了好几个小时,我不知道如何摆脱困境。我知道这有点尴尬,但我更喜欢“像我五岁一样解释”这样的答案。

我对 MVC 架构(以及 OOP)也有点陌生,虽然我没有赶上 100%,但我一直在缓慢但稳定地建设网站。

因此,当搜索表单从视图发送到控制器时,控制器会向模型发送回一个这样构造的数组:

Array
(
    [kind_ID] => 0
    [type_ID] => 1
    [city_ID] => 0
    [address] => foo
    [number] => 
    [price] =>

    // ... and so on (more fields with blank, zero or some data)

问题是,我不知道如何重建或清理数组以丢弃所有留空或为零的元素(或者它们是否为空?);维护所有非零值和所有内容,相同的索引,因为在使用 db->like() 函数时需要索引来进行进一步正确的查询。

我已经仔细阅读了所有 PHP 文档,但没有找到在数组中搜索“某物”并取消设置的任何函数。我已经尝试了几个数组函数,但找不到任何我想要的。

言归正传:

// I'd like to convert this array:

Array
{
    [kind_ID] => 0
    [type_ID] => 1
    [city_ID] => 0
    [address] => foo
    [number] => 
    [price] => 25000
    ...

 // To this one

Array
{
    [type_ID] => 1
    [address] => foo
    [price] => 25000
    ...

我希望我已经足够清楚了,当然,请告诉我是否需要采用不同的方法。

我一直在玩:

array_keys()
unset()

但是,我也不知道如何循环到数组的末尾,或者如何基于它构建一个循环。

感谢您的时间,如果您尝试给我任何提示,请竖起大拇指。任何帮助都感激不尽!

干杯,

4

1 回答 1

1

我想你正在寻找这样的东西:

foreach($arr as $k => $v){
    if( empty($v) || !isset($v) || $v == false ){
        unset($arr[$k]);
    }
}

所以 $k 是键,例如:“年龄”,$v 是值,例如:24

这样做是检查该数组键的值以查看它是否为空(空字符串)、根本未设置或为假(为假、零等),然后取消设置。你可能甚至不需要 !isset 部分,但无论如何我把它扔在那里,但如果它没有设置,你不能取消它,只是为了完成更多,所以你知道它存在。

你用 unset() 走在正确的轨道上,你只需要轻推......干得好:)

于 2013-09-06T04:51:41.313 回答