۱ علیرضا دهکار
جواب سوال استاد صالحی - بخش سوم ساختار تکرار
mahdi mortezaee حل شده توسط mahdi mortezaee

سلام، وقتتون بخیر

 

پاسخ تمرینی که استاد صالحی حلقه while رو گذاشتن برعهده دانشجویان 

در انتها یکم توضیح میدم و امیدوارم استاد نقاط قوت و ضعف رو بهم بگن

 

<?php
/**
 * 
 *  users list in array
 *  
 */
$users = array(
    1 => [
        'first_name' => 'Alireza',
        'last_name' => 'Dehkar',
        'display_name' => 'Alireza Dehkar',
        'age' => 21,
        'role' => 'admin',
        'email' => 'demo@demo.com',
        'phone' => 989012345678,
    ],
    2 => [
        'first_name' => 'Mina',
        'last_name' => 'Vafaei',
        'display_name' => 'Mina Vafaei',
        'age' => 27,
        'role' => 'author',
        'email' => 'mina@demo.com',
        'phone' => 989012345676,
    ],
    3 => [
        'first_name' => 'Mohammadreza',
        'last_name' => 'Salari',
        'display_name' => 'Mohammadreza Salari',
        'age' => 32,
        'role' => 'subscriber',
        'email' => 'msalari@demo.com',
        'phone' => 989012345675,
    ]
);
/**
 * 
 * Print users display name & age
 * 
 */
$i = 1;
$count = count($users);
if ($count > 0) {
    while ($i <= $count) {
        echo $users[$i]['display_name'] . ' ' . $users[$i]['age'] . ' years<br>';
        $i++;
    }
} else {
    echo 'No user found.';
}

1- چرا $i رو برابر با 1قرار دادم؟ به این دلیل که کلید‌های من (آی دی کاربر) از 1 شروع میشه و در دیتابیس مقدار 0 در نظر گرفته نمیشه(در این حالت که از دیتابیس استفاده ای نشده اما من دوست داشتم چنین حالتی رو ایجاد کنم)، البته میشه از توابعی استفاده کرد و کلیدهارو درون ی آرایه دیگه بریزیم یا اینکه ی آرایه indexed داشته باشید که در این حالت میشه برابر با 0 هم قرار داد که من ترجیح دادم فعلا استفاده نکنم

2- تابع count() - تعداد عناصر داخل آرایه رو برامون بازگردانی و داخل متغییر $count میریزه و ی مقدار دوم هم میگیره که اختیاریه ، اگر برابر با 0 باشه(پیشفرض) عناصر آرایه‌های چندبعدی رو شمارش نمیکنه و اگر 1 باشه میتونید شمارشی از آرایه‌های چندبعدی(multidimensional) هم داشته باشید

3- از if هم استفاده کردم تا بررسی کنم آیا کاربری وجود داره یا ن، اگر وجود داشت حلقه رو اجرا میکنه در غیراینصورت حلقه رو نادیده میگیره و ی پیام نمایش میده

4- از single quote استفاده شده به این دلیل که استاد گفتن بهینه‌تر هست از double quote و سرعت بالاتری داره

 

فکر کنم استاد فقط بخش while رو می‌خواستن اما ی مواردی رو اضافه کردم ک شاید مفید باشه

 

نظری داشتید حتما مطرح کنید، حتی اگر کل کد و توضیحات هم اشتباه بود حتما حتما بهم بگید ممنون میشم

1- دلیل اصلی قرار دادن i = 1 این نیست که شما index هاتون رو از 1 شروع کردید چون با این منطق اگه از 2 شروع میکردید باید i = 2 قرار میدادید که اگه تست کنید میبینید که به مشکل میخورید ..

دلیل اصلی i = 1 اینه که تابع count تعداد اعضای آرایه رو 3 تا نشون میده یعنی از 1 شروع به شمارش میکنه نه از صفر

 

2- درمورد سرعت single quote , double quote هم فکر نمیکنم در حالتی که داخلشون فقط string باشه اختلاف سرعت خاصی داشته باشند میتونید مقاله زیر رو بخونید :

https://jonczyk.me/2016/10/08/phpyths-buster-single-quotes-faster-double-quotes/

 

 

بهترین پاسخ
mahdi mortezaee ۰۷ بهمن ۱۳۹۸، ۱۱:۴۳