如何折叠(或清理)给定的数组,在 PHP 中过滤一些结果以进行进一步的 SQL 搜索


How to collapse (or clean) a given array, filtering some results in PHP for a further SQL search

我很犹豫要不要在这里问,但今天我对我面临的数组问题感到非常不知所措。

首先,我想指出,我既不是程序员也不是工程师(我来自设计部门,自学成才)。

但是今天我已经被困了几个小时,我不知道如何摆脱循环。我知道这有点尴尬,但我更喜欢"像我五岁一样解释它"风格的答案。

我对 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()

而且,我不知道如何循环到数组的末尾,或者如何基于它构建循环。

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

干杯

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

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

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

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

你走在

正确的轨道上 unset(),你只需要一个推动......不错的工作:)