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,非常感谢!!!!!正是你抓住了我:)