Twitterのような投稿のハッシュタグを独自のハッシュタグテーブルに格納するとします。私が実行している問題は、実際のマッチではなく、このループがハッシュタグ名の列に文字列「配列」を格納しているように見えるということです。これは返された配列が多次元であるという事実の問題であると思われますか?多次元配列を返すPreg_match_all - 要素へのアクセスに問題がある
preg_match_all("/\S*#(?:\[[^\]]+\]|\S+)/", $body, $matches);
//for each loop array returned in matches
//create_hashtag()
//ISSUE with dimensionality of array
foreach($matches[0] as $v){
create_hashtag($dbh, $v);
attach_hashtag($dbh, $pid, $v);
}
あなたが見ることができるように、私は0番目の場所での配列を呼び出すことによってこの問題に対処しようとしたが、それは動作しませんでした。
たぶん問題が呼ばれる機能である:
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}
EDIT: 私は、クエリが動作することを確認するための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'] $ v){ - これは何をすべきですか?あなたが知っていることを知らないなら、配列の中には、エコーを使わないでください。 $をvar_dumpまたはprint_rと一致させて出力します。 – Seb
@Krpcannonこの質問の解決方法をお探しします。あなたは 'var_export($ matches)'を行い、あなたの質問にそのデータを投稿してから、私にpingできますか? – mickmackusa