🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ اسدالله پور
تابع strtok()
جامعه پی اچ پی ایجاد شده در ۲۶ بهمن ۱۳۹۸

سلام

تابع strtok(" ") برای من قابل فهم نیست. در مثالی که استاد فرمودند این تابع token  را یکی جلو میبرد. اما چطور فقط یک پارامتر گرفته و چطور token را یکی جلو برده؟

سلام

در اینجا باید به یک نکته توجه کنید که فقط برای بار اول نیاز است که رشته به تابع پاس داده شود، برای دفعات بعدی تنها مشخص کردن delimiter‌ها کافی می‌باشد، زیرا این تابع وضعیت رشته را درون خود دارد. یعنی این:

$token = strtok($string, ' ');

خروجی متغیر بالا با توجه به رشته پاس داده شده به آن کلمه 'Hello' می‌باشد. حال برای پیمایش داخل رشته از حلقه while استفاده کردند که با توجه به نکته بالا فقط کافیه delimiter آن مشخص گردد تا باقی کلمات چاپ شوند.

while ($token == true) {
    echo "$token<br />";
    $token = strtok(' ');
}

 

محمدرضا ۲۶ بهمن ۱۳۹۸، ۱۸:۳۸

در مرحله اول کد زیر رو داریم

$token = strtok($string, ' ');

این کد میاد و هر جا در رشته string فاصله میبینه، قبل از اون رو داخل token میریزه

 

اما در کد دوم درون حلقه این کد رو داریم

$token = strtok(' ');

ما در strtok مشخص نکردیم که فاصله رو از کدوم رشته بگیره! مواردی هم که در کد قبل در token میریزیم فاصله بعد از کلمات حذف شده. یعنی اولین کلمه (یا همان hello) وارد token شده

اینجا چه اتفاقی می‌افته؟

اصلا راهی هست که مرحله به مرحله اجرای کد رو بتونیم ببینیم و تحلیل کنیم؟

سیدرضا بازیار ۱۴ بهمن ۱۳۹۹، ۱۹:۰۱

سلام خیلی ساده اگ بخوام بگم به کد زیر نگاه کنید متوجه میشید :

<?php
$a = "Hello to PHP course";
$b = strtok($a , " ");
$c = strtok(" ");
$d = strtok(" ");
$e = strtok(" ");
echo "$b => $c => $d => $e";

خب حالا به جای اینکه من این همه زحمت بدم اینقدر کد بنویسم بهتره که از حلقه که استاد گفتند استفاده کنم

Mehrjoo ۰۷ اردیبهشت ۱۴۰۰، ۱۰:۳۲