سلام علیکم
یک code
$xml = new SimpleXMLElement($URL,null,true);
$str = $xml->asXML();
$xmlArray = new SimpleXMLElement($str);
داریم که مانند آرایه های تو در تو دارای شاخه زیر و شاخه است و با دستور
echo '<pre>'; print_r($xmlArray); echo '</pre>';
به خوبی در مرورگر چاپ و نمایش داده می شود
[recordData] => SimpleXMLElement Object
(
[srw_dc] => SimpleXMLElement Object
(
[title] => Patterson's allergic diseases /
[creator] => Array
(
[0] => Patterson, Roy, 1926-
[1] => Grammer, Leslie Carroll.
[2] => Greenberger, Paul A.
)
[type] => text
[publisher] => Philadelphia : Lippincott Williams & Wilkins,
[date] => c2002.
[language] => eng
[description] => Array
(
[0] => Rev. ed. of: Allergic diseases : diagnosis and management / edited by Roy Patterson ; associate editors, Leslie Carroll Grammer, Paul A. Greenberger ; with 24 additional contributors. 5th ed. c1997.
[1] => Includes bibliographical references and index.
)
[subject] => Array
(
[0] => Allergy.
[1] => Hypersensitivity--diagnosis.
[2] => Hypersensitivity--therapy.
)
حال من می خواهم عناصر برخی زیرشاخه های این آرایه مانند را که عبارت متنی است به صورت رشته در بیاورم.
بنابراین این code
foreach ($creator as $value) {
$creators .=', '.$value;
}
را نوشتم و برای تفکیک هر دو عنصر یک زیر شاخه از ویرگول و فاصله استفاده کردم اما این کار باعث می شود در آغاز رشته یک فاصله و ویرگول باشد که بی معنی است بنابراین عنصر اول آرایه را در متغیر creators ذخیره کردم و سپس با تابع unset آن را حذف کردم
$creators = $creator[0];
unset($creator[0]);
foreach ($creator as $value) {
$creators .=', '.$value;
}
جالب است بدانید وقتی از تابع استفاده می کنم اولین عنصر آرایه اصلا در رشته نیست و هنگامی که از این تابع استفاده نمی کنم عنصر اول دوبار در آرایه ذخیره می شود نم دانم چرا؟
آیا راه حل بهتری هم هست؟
پیشاپیش از لطف شما ممنونم