[英]How to search for string in array in PHP?
所以我得到了這個大的 xml,可以在這里找到,我將其存儲在我的數據庫中作為settype-setId-partId
,我想過濾未知字符串並替換它們。這是我嘗試過的:
<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=db", "root", "");
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$figuredata = simplexml_load_file("figuredata.xml");
$users = $conn->prepare("SELECT figure, username from players");
$users->execute();
$users = $users->fetchAll(PDO::FETCH_OBJ);
foreach($figuredata->sets->settype as $settype) {
foreach($settype->set as $set) {
foreach($set->part as $part) {
foreach($users as $user ) {
$lookArr = explode(".",$user->figure);
foreach($lookArr as $look ){
$lookArrNew = explode("-", $look);
if($lookArrNew[1] != $set->attributes()->id && $lookArrNew[2] != $part->attributes()->id) {
echo "fail";
}
}
}
}
}
}
但它為每個字符串返回失敗。 我應該怎么辦?
如果您使用 XPath 來搜索數據而不是使用所有各種循環,則可以將代碼減少為讀取播放器,然后搜索條目。
這使用了 XPath 表達式//set[@id="'.$lookArr[1].'"]/part[@id="'.$lookArr[2].'"]
,它將尋找類似//set[@id="3774"]/part[@id="3329"]
。 這是一個<set>
值,其屬性值為 id = 3774,其中一個<part>
的 id 屬性為 3329。
xpath()
返回一個列表,因此如果它為空,則找不到該值。
$users = $users->fetchAll(PDO::FETCH_OBJ);
foreach($users as $user ) {
$lookArr = explode(".",$user->figure);
foreach($lookArr as $look ){
$lookArr = explode("-",$figure);
$set = $figuredata->xpath('//set[@id="'.$lookArr[1].'"]/part[@id="'.$lookArr[2].'"]');
if ( empty($set) ) {
echo "fail";
}
else {
echo $set[0]->asXML();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.