假设我有一个像这样的数组:
Array
(
[0] => Array
(
[0] => John
[1] => accountant
[2] => senior
[3] => joined on 2018-03-12
[4] => http://personalblog[dot]com/abc
[5] => Germany
)
[1] => Array
(
[0] => Marry
[1] => journalist
[2] => junior
[3] => 2019-04-13
[4] => http://personalblog[dot]com/efd
[5] => Canada
)
[2] => Array
(
[0] => Jim
[1] => salesman
[2] => junior
[3] => 2017-01-18
[4] => http://personalblog[dot]com/ehs
[5] => US
)
[3] => Array
(
[0] => Clair
[1] => director assistant
[2] => senior
[3] => 2019-08-22
[4] => http://personalblog[dot]com/khh
[5] => Singapore
)
)
而且我有一个这样的表:
id name ... Date_joined
---------------------------------
1 Jack ... 2019-07-25
2 Clair ... 2019-08-22
3 Jim ... 2017-01-18
我执行foreach loop
来获得上面数组的values
,如下所示:
foreach ($arr as $key => $value){
echo $value.'<br />';
}
然后我通过使用name column
查询来检索表的SELECT
:
$query = "SELECT name FROM tabeName";
$r = mysqli_query($dbc, $query);
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
echo $row['name'].'<br />';
}
[我想得到的是将数组值*中的一个与表中的名称进行比较,这样我就只能print
到目前为止尚未在表中的数组值,即[[嫁给约翰。
if
内部尝试了while loop
有条件,如下所示:if($row['name']!= $value[0]){
echo $value[0].'<br />';
}else{
echo 'No new value found';
}
但是我只是从表中获得了所有名称3次,而不是根据需要从数组中获得了新名称和John的唯一新数组值。您能帮我吗?Marry
谢谢
in_array()
和array_column()
,如下所示:$userNamesArray = array_column($arr,'0');
$query = "SELECT name FROM tabeName";
$r = mysqli_query($dbc, $query);
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
if(!in_array($row['name'], $userNamesArray)){
echo $row['name'].'<br />';
}
}
在仔细阅读了您的代码之后,我知道您需要像这样尝试:
$userNamesArray = array_column($arr,'0'); $query = "SELECT name FROM tabeName"; $r = mysqli_query($dbc, $query); $rows = mysqli_fetch_all($r, MYSQLI_ASSOC); $rowsName = array_column($rows,'name'); foreach($userNamesArray as $userNamesArr){ if(!in_array($userNamesArr, $rowsName)){ echo $userNamesArr."<br>"; } }
样本输出:-https://3v4l.org/CliVT