با سلام
چرا من اگه نتیجه برگشتی رو درون خود تابع اکو کنم، همه چی برام برمیگرده ولی اگر بیرون اکوش کنم، کلا نال میده بهم؟؟؟
مثلا الان که در لاین ۲۲ دامپ گرفتم، نتیجه برگشتی میشه این:
اما اگر از داخل دامپ بگیرم:
سلام محمد عزیز
چون داخل تابع عملیات داره صورت میگیره.
اگر میخواید بیرون تابع هم در دسترس باشه یک متغیر بسازید و مقدار داخل تابع رو برابر اون قرار بدید.
این کار رو هم انجام دادم ولی انگار متغیری که درون تابع تعریف میشه، خارج از تابع دردسترس نیست
البته این که کل فیلتر رو بزارم درون یک آرایه، فقط برای زمانیه که فیلد برگشتیه ما، یکی باشه. اینجا من اشتباه نوشتم کد رو
ولی خب همچنان این مشکل رو دارم که نمیدونم موارد برگشتی رو چطوری خارج از انونیموس فانکشن، استفاده کنم.
ابتدا توی فانکشن متغیر رو توسط global وارد کنید.
function(){ global $var; $var='myvar'; }
راه حلتون اکی بود
حالا من واقعا درک نمیکنم که چرا این کد کار نمیکنه !!!
include 'vendor/autoload.php'; use Goutte\\Client; $client = new Client(); $crawler = $client->request('GET', 'https://symfony.com/blog/symfonylive-paris-2023-announcement-of-all-pre-conference-workshops'); $links = []; $crawler->filter('div.post-content ul li a')->each(function($node) { global $links; $key = $node->filter('div.post-content ul li a')->text(); $value = $node->filter('div.post-content ul li a')->attr('href'); $links[$key] = $value; }); echo ' '; var_dump($links); echo ' ';
شما فیلتر رو روی کراولر باید اعمال کنید در صورتی که روی نود اعمال کردید.
$node->text(); $crawler->filter()->...
مثلا اگر بخوایم در یک وبسایت، آخرین خبرش یا آخرین کامنتش یا آخرین هرچیزیش رو برداریم و بگیریم، باید چیکار کنیم؟؟؟؟
یعنی میخوام داینامیک باشه
چطوری میتونیم بهش بگیم در هر بار اجرا، اخرین چیز رو بگیر؟
موارد رو که توی آرایه ریختید با فانکشن end آخرین مورد رو بگیرید.
یا یک راست text رو صدا بزنید و each نزنید.
پیشنهاد میکنم داکیومنت گوته رو بررسی کنید.
end($links);
تشکر