Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用while循环检查和获取数组中的数据?_Php_Arrays - Fatal编程技术网

Php 如何使用while循环检查和获取数组中的数据?

Php 如何使用while循环检查和获取数组中的数据?,php,arrays,Php,Arrays,我有两个表,我想得到只在数组中匹配的结果,下面是数据库: 表已固定,用于存储物品的应用位置 | id | article|u id | pinted|u sort |应用| |1 | 121 | 1 | a:1:{i:0;i:1;}| |2 | 148 | 1 | a:3:{i:0;i:2;i:1;i:2;i:2;i:3;}| |3 | 210 | 1 | a:3:{i:0;i:3;i:1;i:2;i:2;i:3;}| 表文章,它存储文章 | aid |标题| |121 |测试1| |148

我有两个表,我想得到只在数组中匹配的结果,下面是数据库: 表
已固定
,用于存储物品的应用位置

| id | article|u id | pinted|u sort |应用|
|1 | 121 | 1 | a:1:{i:0;i:1;}|
|2 | 148 | 1 | a:3:{i:0;i:2;i:1;i:2;i:2;i:3;}|
|3 | 210 | 1 | a:3:{i:0;i:3;i:1;i:2;i:2;i:3;}|
文章
,它存储文章

| aid |标题|
|121 |测试1|
|148 |测试2|
|210 |测试3|
这是我的函数


我认为您的代码应该在默认情况下初始化$result=false,并让下面的代码按照它运行

function getArticlePinned($connectdb, $board_id = '')
{
    $board_id = (int) $board_id;
    $result   = false;
    if (!empty($board_id)) {
        $read['query'] = 'SELECT
            article.aid,
            article.title,
            pinned.apply
            FROM pinned
            INNER JOIN article ON article.aid = pinned.article_id
            ORDER BY pinned_sort ASC';
        //Get result
        $read['stmt'] = $connectdb->stmt_init();
        $read['stmt']->prepare($read['query']);
        $read['stmt']->execute();
        $read['result'] = $read['stmt']->get_result();
        if ($read['result']->num_rows != 0) {
            while ($read['row'] = $read['result']->fetch_assoc()) {
                //Get array from unserialize
                $pinnedArray = unserialize($read['row']['apply']);
                //Check if the board id is in array
                if (is_array($pinnedArray) && in_array($board_id, $pinnedArray)) {
                    $result[] = $read['row'];
                }
            }
        }
    }
    return $result;
}

.

哦,我的天哪!我修好了!!我只是删除了
$result=false
当在_数组中
返回false时,代码如下:

if(在数组中($board\u id,$pinnedArray)==true){
$result[]=$read['row'];
}
而不是

if(在数组中($board\u id,$pinnedArray)){
$result[]=$read['row'];
}否则{
$result=false;
}

仍然不知道为什么,但它能工作…

什么?!但是数组是通过
serialize
函数生成的…@04FS测试此
$array=array(1,2,3);echo序列化($array)
它返回这个
a:3:{i:0;i:1;i:1;i:2;i:2;}
你能把它和我的解决方案比较一下吗,我给了你刚才发布的不同的东西吗?@DrakulaPredator哦,对不起,我没有完全看你的代码,我以为你只添加了
$result=false在脚本开头…因为在while循环中,您正在检查board_id是否存在,如果不存在,则您正在重置/删除结果数组,如果匹配,则它正在结果中添加数据,因此随后,您正在从$result数组中添加和删除数据。我希望我是清楚的。哦,我明白了,你的意思是我只是将
$result
设置为true,并在
$board\u id
不在数组中时将其重置为false,非常感谢!!!!!正是你抓住了我:)