• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد pointer ها
#1
سلام خدمت دوستان.سوالی در مورد pointer ها داشتم.میخواستم دوستان یه توضیحی بدن و یه مثال بزنن که کاربرد پوینتر ها چیه.مثالش ترجیحا این شکلی باشه که یه تیکه کد بنویسن و بگن اینجا از پوینتر استفاده شده و در صورتی که از پوینتر استفاده نمیشد کد نتیجه نمیداد.ممنون و مچکر از اساتید سایتHeart
  پاسخ
تشکر شده توسط :
#2
اگر از پوینتر منظورت * در C هستش، PHP پوینتر نداره... فقط رفرنس & داره و کمی رفتارش متفاوته

رفرنس & به زبان ساده: بجای استفاده از کپی داده، از اصل/منبع داده استفاده می کنه. ولی با نامی متفاوت:
کد پی‌اچ‌پی:
<?php

$a 
2;
$b =& $a;

echo 
$b// 2

$a 5;

echo 
$b// 5 

نکته: garbage collector هه PHP قادر نیست متغیرهای رفرنس شده رو آزاد/نابود کنه.
نکته 2: دستور ()unset قادر نیست دیتای متغیر رفرنس شده رو آزاد/نابود کنه و فقط نام متغیر رو از Variable table موتور PHP حذف می کنه.
نکته 3: برای تخلیه داده رفرنس شده باید اونو برابر NULL قرارش داد.
نکته 4: در متغیرهایی که حجم بالایی دارند اصلاً نباید استفاده بشه، درغیر اینصورت نتیجه عکس میده.
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : Alaa ayoubsys
#3
ممنون بابت پاسخگویی.این کد رو ببینید شما
کد پی‌اچ‌پی:
function getOrders($uID='all',$page=1,&$count=0){
    global 
$db;
    
$whereStr "1=1";
    if (
$uID != 'all' and is_numeric($uID)) {
        
$whereStr "user_id=$uID";
    }
    
$start = ($page 1) * IS_ORDERS_PER_PAGE;
    
$len IS_ORDERS_PER_PAGE;
    
// Get Orders Query
    
$sql "SELECT o.id,o.price,o.create_date,o.image_id,o.user_id,i.title,thumb_url FROM $db->ordersTable o,$db->imagesTable i where $whereStr and i.id=o.image_id order by o.create_date desc limit $start,$len";
    
$result $db->query($sql);
    if (
$result) {
        if (
$uID != 'all' and is_numeric($uID)) {
            
$count getField($db->ordersTable'user_id'$uID);
        } else {
            
$count getField($db->ordersTable);
        }
        
$orders $result->fetch_all(MYSQLI_ASSOC);
        return 
$orders;
    }
    return 
false;



در تابع بالا پارامتر &$count بصورت رفرنس تعریف شده.بعد تابعد getOrders بصورت زیر تعریف شده
کد پی‌اچ‌پی:
if($access=='orders'){
    
$orderCount=0;
    
$page = (isset($_GET['page'])) ? $_GET['page'] : 1;
    
$orders=getOrders('all',$page,$orderCount);

توو کد دوم تابع getOrders، مقدار&$count،مقدار$orderCount بهش پاس داده شده.میخوام بدونم الان چرا count بصورت رفرنس تعریف شده.اگه بصورت رفرنس تعریف نشه چی میشه؟ممنون
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان