データベースから xml フィードを取得する次のコードがある場合、それらを SimpleXMLElement 配列に変換します。
try{
function processLink( $link , $appendArr ){
## gets url from database as outlined above.
$xmlUrl = $link;
#Loads the url above into XML
$ConvertToXml = simplexml_load_file($xmlUrl);
# -> Setup XML
$appendArr[] = $ConvertToXml->channel->item;
}
#Connect to DB
require_once '../../src/conn/dbc.php';
$dbconn = new PDO('mysql:host=localhost;port=3306;dbname=mydb',$db_user,$db_pass,array(PDO::ATTR_PERSISTENT => true));
$q = $dbconn->prepare("SELECT FW_ArtSrcLink FROM FW_ArtSrc WHERE OneSet=:OneSet and leagID = :TheLeagueID");
$q->execute(array(':OneSet' => 1, ':TheLeagueID' => 14)); # SET LEAGUE HERE.
$result = $q->fetchAll();
$newsStory = array();
foreach ($result as $value ){
if ( is_array($value) ){
foreach ( $value as $secondValue ){
processLink($secondValue , &$newsStory);
}
continue;
}
processLink($value , $newsStory);
}
## Don't want to do this, I want to output just the [title] and [link]
//print_r($newsStory);
}
SimpleXMLElement 配列からキー [タイトル] と [リンク] を抽出したいだけの場合、現在のコードでこれを行うにはどうすればよいですか?
私は使用してみました:
echo 'title'.$newStory->channel->item->title;
echo 'title'.$newStory->title;
echo 'title'.$value->title;
print_r() からの出力:
すべて空白の値で、または何もエコーされません。タイトルとリンクの両方を出力するにはどうすればよいですか?
変更:
foreach ($newsStory as $story ) {
echo "<hr>"."<a href='".$story->link."'>".$story->title."</a>"."<hr>";
}
The problem is... it prints some duplicates... how do I get ONLY unique links to display?
更新されたFOREACH:
$stories = array(); // contains all of the stories already output
foreach ( $newsStory as $story ) {
if ( ! in_array( $stories, $story->title ) ) {
$stories[] = $story->title;
echo "<hr>"."<a href='".$story->link."'>".$story->title."</a>"."<hr>";
} //if
} //foreach
これは警告を出力します(重複を表示しながら):
Warning: in_array() expects parameter 2 to be array, object given on line 39:
基本的にこれは好きではありません:
if ( ! in_array( $stories, $story->title ) ) {