假設我想將類似twitter的帖子中的hashtag存儲在它自己的hashtags表中。我遇到的問題是,它看起來好像這個循環將字符串「Array」存儲在hashtag名稱列中,而不是實際匹配。這似乎是一個問題,因爲返回的數組是多維的?你可以看到,我試圖通過在第0點調用數組來解決這個問題,但是這並不奏效。Preg_match_all返回多維數組 - 訪問元素時遇到問題
也許問題是在調用的函數:
function attach_hashtag($dbh, $pid, $tagname) {
//insert into Tagged
try {
$sql = 'INSERT INTO Tagged (hashtag_name, post_id)
VALUES (:name, :pid);';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':name', $tagname);
$stmt->bindParam(':pid', $pid);
$stmt->execute();
$array = [
'status' => 1,
];
return $array;
} catch (Exception $ex){
$array = [
'status' => 0,
];
return $array;
}}
而且
function create_hashtag($dbh, $tagname) {
try {
$sql = 'INSERT INTO Hashtags (name)
VALUES (:name);';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':name', $tagname);
$stmt->execute();
$array = [
'status' => 1,
];
return $array;
} catch (Exception $ex){
$array = [
'status' => 0,
];
return $array;
}
//insert into Hashtags}
編輯: 我用的var_dump以確保查詢工作。
//var_dump($pid); returns proper value
preg_match_all("/\S*#(?:\[[^\]]+\]|\S+)/", $body, $matches);
//for each loop array returned in matches
//echo $matches['Array']; - why does this return "Array"
//ISSUE with dimensionality of array
foreach($matches['Array'] as $v){
create_hashtag($dbh, $v);
attach_hashtag($dbh, $pid, $v); //inserts into tagged,
}
foreach($ matches ['Array'] as $ v){ - 這應該給什麼?如果你不知道,陣列中有什麼,不要使用回聲。輸出$與var_dump或print_r匹配。 – Seb
@Krpcannon我想幫助您找到解決此問題的解決方案。你可以做'var_export($ matches)',將數據發佈到你的問題,然後ping我? – mickmackusa