شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30

آرایه (Array) در برنامه نویسی PHP

php-array

در مباحث گذشته از بخش آموزش مقدماتی PHP با نحوه کار حلقه foreach آشنا شدیم و گفتیم که این نوع حلقه ها برای مدیریت آرایه (Array) کاربرد دارد به طور مثال مقادیری که از فرم های وب با قابلیت انتخاب چندگانه (multiple) ارسال می شوند را می توانیم در حلقه foreach مورد به مورد بررسی و به پارامترهای آن دسترسی داشته باشیم که این ساز و کار به کمک آرایه محقق می شود، به هر صورت این بار و در ادامه آموزش های مقدماتی می خواهیم دانشمان را در برنامه نویسی PHP کمی بیشتر توسعه داده و مبحث آرایه ها را با هم بررسی کنیم، فراگیری کامل و درست این مبحث می تواند درک ما را از نحوه کار کدهای PHP و ساختار ببرنامه های وب بسیار ارتقاء داده و در خیلی از پروژه ها راهگشا باشد.

آرایه (Array) چیست؟


آرایه (Array) در برنامه نویسی به ساختار داده ای به شکل متغیر یا آبجکت گفته می شود که خود شامل عناصر (Elements) زیرمجموعه به شکل لیست است که می توانیم با شماره عددی خودکار (Index) یا کلید (Key) اختصاصی به مقدار (Value) آنها دسترسی داشته باشیم، بنابراین در مورد آرایه ها با چند اصطلاح زیر روبرو خواهیم شد:
- Array: آرایه ای که تعریف می کنیم.
- Element: به هر عضو در آرایه عنصر یا Element گفته می شود.
- Index: به موقعیت عددی خودکار عنصر در فهرست عناصر آرایه ایندکس گفته می شود و با آن به مقادیر عنصر مورد نظر دسترسی پیدا می کنیم.
-Key: کلید اختصاصی که به صورت غیرخودکار تعیین می شود و با آن به مقادیر عنصر مورد نظر دسترسی پیدا می کنیم.
Value: مقداری که هر عنصر آرایه در خود نگهداری می کند.
بر این اساس اگر آرایه ما در PHP به شکل نمونه زیر باشد:
<?php
$array = array('HTML', 'CSS', 'JS', 'PHP');
?>
در این ساختار عبارت array اول متغیر آرایه، array دوم دستور تعریف آرایه و عبارت های رشته ای HTML، CSS، JS و PHP که با کاراکتر کاما (,) از هم جدا شده اند هرکدام عناصر آرایه هستند، ایندکس ها در این شیوه به صورت خودکار و از 0 شمارش می شوند (آرایه در زبان PHP به صورت Zero-based است) که در نمونه کد قابل روئیت نیست اما در هنگام دسترسی به مقادیر عناصر به کار می آید، به طور مثال اگر بخواهیم مقادیر Index 3 آرایه بالا را استخراج و در خروجی چاپ کنیم می توانیم با کد زیر این کار را انجام دهیم:
<?php
$array = array('HTML', 'CSS', 'JS', 'PHP');
echo $array[3];
?>
که نتیجه عبارت
PHP
خواهد بود، دقت کنیم ایندکس و کلید دو مفهوم مشابه هستند با این تفاوت که ایندکس (Index) در حالتی استفاده می شود که شماره گذاری موقعیت عناصر به صورت خودکار و عددی (از 0) توسط مفسر انجام شده باشد اما کلید (Key) زمانی است که کلیدواژه دسترسی به عنصر را به صورت عددی یا با در نظر گرفتن برچسب متنی خودمان تعیین می کنیم، به طور مثال در نمونه کد زیر استفاده از ایندکس 3 خطا خواهد داشت:
<?php
$array = array(0 => 'HTML', 1 => 'CSS', 2 => 'JS', 5 => 'PHP');
echo $array[3];
?>
کد بالا خطای
Notice: Undefined offset: 3
را چاپ می کند چون ایندکس 3 در آرایه وجود ندارد و برای چاپ عبارت PHP باید از کلید 5 استفاده کنیم:
echo $array[5];
در واقع می توان گفت زمانی که به صورت دستی شماره ایندکس عناصر آرایه را تغییر می دهیم اصطلاح کلید (Key) جانشین فهرست (Index) می شود، به طور خلاصه فهرست (Index) شماره گذاری خودکار و کلید (Key) می تواند مقدار عددی یا متنی باشد که هر دو اصطلاح برای دسترسی به مقدار (Value) عناصر آرایه کاربرد دارند.

شیوه های مختلف تعریف آرایه در PHP


آرایه در PHP مشابه دیگر زبان مرتبط با وب یعنی جاوا اسکریپت به دو شیوه زیر قابل تعریف است:
- تعریف آرایه با عبارت دستوری array، به طور مثال:
<?php
$array = array(100, 200, 300);
?>
- تعریف آرایه با کاراکتر قلاب []، به طور مثال:
<?php
$array = [100, 200, 300];
?>
نتیجه هر دو روش بالا از نظر فنی یکسان است و صرفا در نحوه تعریف و Syntax تفاوت وجود دارد، در ادامه هر دو روش بالا را به تفصیل بررسی می کنیم.

تعریف آرایه در PHP با عبارت دستوری array


اولین روش تعریف آرایه در PHP استفاده از عبارت دستوری array است، در این حالت کلیدها و مقادیر (Key/Value) را می توانیم با علامت پیکان (<=) به صورت جفتی در نظر بگیریم یا اینکه صرفا مقادیر آرایه را با کاراکتر کاما (,) از هم متمایز کرده و ایندکس گذاری خودکار را به مفسر PHP واگذار کنیم، به طور مثال:
<?php
$array_1 = array('A' => 100, 'B' => 200, 'C' => 300);
echo $array_1['B'] . '<br>';
$array_2 = array(100, 200, 300);
echo $array_2[2];
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
200
300
در آرایه اول برچسب مقادیر به صورت سفارشی و با کاراکترهای متنی (A,B,C) انجام شده است که در این حالت از اصطلاح کلید (Key) استفاده می کنیم، به فرض مقادیر کلید A در آرایه array_1 برابر با 100 است، اما در آرایه دوم شماره گذاری به صورت خودکار و از 0 انجام می شود (اشاره شد که آرایه ها در PHP از 0 شماره گذاری می شوند و به اصطلاح Zero-based هستند)، در این حالت از اصطلاح ایندکس (Index) استفاده می کنیم به فرض مقادیر ایندکس 1 آرایه array_2 برابر با 200 است.
نکته: زبان برنامه نویسی PHP برخلاف جاوا اسکریپت (JavaScript) به صورت ذاتی از آرایه های با کلید متنی (Associative Array) پشتیبانی می کند و نیازی به تعریف آبجکت ثابت (Literal Object) جداگانه نیست.

تعریف آرایه در PHP با کاراکتر قلاب []


شیوه دوم تعریف آرایه که به حالت مختصرنویسی نیز معروف است استفاده از کاراکتر قلاب [] (یا Square Bracket) است که در این حالت هم می توانیم با یا بدون استفاده از کلیدهای سفارشی آرایه مورد نظر را تعریف کنیم، به طور مثال:
<?php
$array_1 = ['A' => 100, 'B' => 200, 'C' => 300];
echo $array_1['B'] . '<br>';
$array_2 = [100, 200, 300];
echo $array_2[2];
?>
خروجی نمونه کد بالا نیز به صورت زیر خواهد بود:
200
300
اینکه در کدنویسی از چه شکلی از تعریف آرایه استفاده کنیم بستگی به موقعیت و گاهی سلیقه برنامه نویس دارد، روش array قدیمی تر است و از زمان پیدایش PHP معرفی شده است اما روش قلاب جدیدتر است و از نسخه 5.4 به مفسر PHP اضافه شده است، در هر صورت ممکن است در موارد محدودی کدنویسی برخی برنامه ها صرفا از یک روش خاص پشتیبانی کنند.

تعریف آرایه های دو یا چندبعدی (Multidimensional) در PHP


استفاده از آرایه ها در کدنویسی برنامه های وب به حالت ساده و تک بعدی محدود نمی شود، گاهی مواقع مقدار هر کلید می تواند خود یک آرایه (آرایه آرایه یا Array of Array) باشد و این شیوه ممکن است تا چند سطح عمق پیدا کند که در این حالت از اصطلاح آرایه چند بعدی (Multidimensional) استفاده می کنیم، اصول تعریف و دسترسی به عناصر آرایه در این شیوه ها نیز مشابه با حالت تک بعدی است که در ادامه با چند مثال بررسی می کنیم.
- مثالی از آرایه دوبعدی در PHP:
<?php
$array_1 = ['A' => array(10, 20, 30), 'B' => array(40, 50, 60), 'C' => array(70, 80, 90)];
echo $array_1['B'][1];
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
50
- مثالی از آرایه چندبعدی در PHP:
<?php
$array_1 = [array([10, 20, 30], [40, 50, 60]), 56, 78];
echo $array_1[0][0][0];
echo '<br>';
echo $array_1[1];
?>
خروجی نمونه کد بالا به صورت نمونه زیر خواهد بود:
<?php
$array_1 = [array([10, 20, 30], [40, 50, 60]), 56, 78];
echo $array_1[0][0][0];
echo '<br>';
echo $array_1[1];
?>
در این نمونه کد برای تعریف آرایه و عناصر زیرمجموعه آن از روش های مختلف (عبارت دستوری array و کاراکتر قلاب []) استفاده کرده ایم.
نکته: گفتیم که PHP به صورت ذاتی از آرایه هایی که کلید متنی یا سفارشی داشته باشند (Associative Array) پشتیبانی می کند.

افزودن یا حذف عنصر آرایه در PHP


در مثال های بالا با نحوه دسترسی به عناصر آرایه به روش ایندکس (Index) و کلید (Key) آشنا شدیم، اما اگر بخواهیم یک عنصر را در مرحله دیگری از برنامه به آرایه اضافه یا برعکس اگر بخواهیم عنصری را از آرایه حذف کنیم چاره چیست؟
در اغلب زبان های برنامه نویسی برای اینگونه موارد توابع اختصاصی جداگانه ای تعریف می شود و ما هم در ادامه این سری از آموزش ها توابع کار با آرایه در PHP را بررسی خواهیم کرد منتها حذف و اضافه ساده نیازی به استفاده از تابع اختصاصی ندارد و به صورت زیر انجام می شود.
برای افزودن یک عنصر به آرایه بعد از مرحله تعریف کافی است از روش نمونه زیر پیروی کنیم:
<?php
$array_1 = ['A', 'B', 'C'];
$array_1[] = 'D';
echo $array_1[3];
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
D
اگر با دستور print_r از آرایه array_1 خروجی بگیریم خواهیم داشت:
Array ( [0] => A [1] => B [2] => C [3] => D )
همان طور که مشخص است از شیوه شماره گذاری خودکار (Index) در این حالت استفاده شده است، یک مثال از شیوه اختصاص کلید (Key) سفارشی:
<?php
$array_1 = [22 => 'A', 13 => 'B', 57 => 'C'];
$array_1['14'] = 'D';
echo $array_1['14'];
?>
خروجی نمونه کد بالا به صورت زیر خواهد بود:
D
اگر با دستور print_r از آرایه array_1 خروجی بگیریم خواهیم داشت:
Array ( [22] => A [13] => B [57] => C [14] => D )
در حالت کلیدهای سفارشی رعایت ترتیب کلیدها اهمیتی ندارد.
برای حذف یک عنصر از آرایه نیز تابع عمومی unset به روش زیر قابل استفاده است:
<?php
$array_1 = [22 => 'A', 13 => 'B', 57 => 'C'];
unset($array_1[22]);
print_r($array_1);
?>
نتیجه اجرای نمونه کد بالا به صورت زیر خواهد بود:
Array ( [13] => B [57] => C )
برای حذف عنصر مورد نظر از آرایه کافی است در تابع unset آرایه را به همراه کلید متناظر به عنوان آرگیومنت تنظیم کنیم، همین روش برای حالت ایندکس خودکار نیز کاربرد خواهد داشت، مثال:
<?php
$array_1 = ['A', 'B', 'C'];
unset($array_1[0]);
print_r($array_1);
?>
نتیجه اجرای نمونه کد بالا به صورت زیر خواهد بود:
Array ( [1] => B [2] => C )
نکته مهم اینکه با حذف عنصر از آرایه با تابع unset چینش کلیدها تغییری نمی کند.

استفاده از آرایه ها در حلقه foreach


در مفسر PHP حلقه foreach به صورت ذاتی و پیش فرض برای دسترسی به عناصر آرایه ها در دور تکرار تعریف شده است که در آموزش های مرتبط با انواع حلقه (Loop) به اختصار در این خصوص صحبت کردیم، با حلقه foreach می توانیم به فرض اطلاعات ارسال شده از فرم های HTML که فیلدهایی با قابلیت چندگانه (Multiple) دارند را تجزیه کرده و آیتم به آیتم عناصر آرایه ارسالی را مورد پردازش قرار دهیم، به طور مثال اگر فرم HTML زیر را داشته باشیم:
<form action="#" method="post">
<label for="country">انتخاب کشور:</label>
<select name="country[]" id="country" multiple="multiple">
<option value="Iran">Iran</option>
<option value="Germany">Germany</option>
<option value="Japan">Japan</option>
</select>
<input type="submit" value="ارسال">
</form>
در این فرم فیلد انتخاب شونده با نام فرضی country قابلیت چندگانه (Multiple) دارد و کاربر می تواند با نگه داشتن کلید Ctrl از بین option های موجود یک یا چند مورد را انتخاب و ارسال کند، با دقت در کدنویسی فرم HTML مشخص است که کاراکتر قلاب [] و عبارت multiple به فیلد country اضافه شده اند، در این حالت اطلاعات فیلد مورد نظر به صورت آرایه به سرور ارسال می شود اما در سمت سرور این آرایه را به چه نحوی مدیریت و به عناصر آن دسترسی پیدا کنیم؟
پاسخ حلقه foreach است به طور مثال:
<?php
@$country = $_POST['country'];
foreach($country as $key => $value){
    echo $value . '<br>';
}
?>
به این صورت اگر کاربر تمام موارد را انتخاب کند خروجی به شکل زیر خواهد بود:
Iran
Germany
Japan
با حلقه for هم می توانیم به عناصر آرایه در دور تکرار دسترسی داشته باشیم اما حلقه for به طور ذاتی برای کار با آرایه ها تعریف نشده و باید هنگام گرفتن خروجی ایندکس/کلید مورد نظر را تعیین کنیم، به طور مثال:
<?php
@$country = $_POST['country'];
$count = count($country);
for($i = 0; $i < $count; $i++){
    echo $country[$i] . '<br>';
}
?>
کد بالا خروجی مشابه حلقه foreach خواهد داشت.
توجه کنیم در حالت for ایندکس/کلید آرایه به صورت داینامیک و در هر دور حلقه متغیر است، در واقع ایندکس/کلید همان مقادیر متغیر i است که در هر دور حلقه یک واحد افزایش می یابد و حلقه نیز تا جایی که مقادیر i از تعداد عناصر آرایه که با تابع count محاسبه شده کوچکتر باشد ادامه می یابد.
در آموزش های بعدی با توابع کار با آرایه (Array Functions) که با تنوع  و تعداد زیاد در مفسر PHP وجود دارند آشنا خواهیم شد.
دسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
توابع کار با آرایه در PHP - بخش دوم
آموزش برنامه نویسی وب با PHP
عملگرها (Operators) در PHP
توابع کار با آرایه در PHP - بخش سوم
تعریف و استفاده از متغیر (Variable) در PHP
دیدگاه
more ۵۲ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
هادی
۰۰:۴۷ ۱۳۹۶/۱۱/۰۵
درود
از لینک زیر داده هایی را فراخوانی میکنم ولی نیاز دارم فقط گزینه های داخل "" لیست بشن امکانش هست راهنمایی کنید
https://api.liqui.io/api/3/info
مثلا:
"ltc_btc"
"steem_btc"
"sbd_btc"
برای کار با خروجی این آدرس باید با توابع تجزیه JSON و مبحث آرایه ها در PHP آشنا باشید، در این صورت می توانید از نمونه کد زیر به نحو دلخواه استفاده کنید:
<?php
$json = file_get_contents('https://api.liqui.io/api/3/info');
$obj = json_decode($json);
$array = $obj->pairs;
function myArrayKeys($ar) {
foreach($ar as $k => $v) {
$keys[] = $k;
}

return $keys;
}
$result = myArrayKeys($array);
//print_r($result);
foreach($result as $key => $value){
echo $value . '<br>';
}
?>
احسان
۱۲:۳۶ ۱۳۹۶/۰۸/۱۱
سلام خسته نباشید من دو تا ارایه دارم که میخام بصورت یکجا وارد دیتابیس بشه و از دستور append واسه ساخت فرم ها استفاده میکنم و وقتی اطلاعات رو ارسال میکنم دو تا ارایه داخل یک سطر میشینه یعنی هر ارایه سطر سطر جدا نمیشه
کدهای استفاده شده هم این هاست
$array=$_POST['img'];
$array1=$_POST['imgg'];
foreach($array as $img){
$result=implode(" ",$array1);
$sql="insert into hozor (tarikh,zarfi) values (?,?)";
$arr=array($img,$result);
$object->myquery($sql,$arr);
}
بطور کلی هر ارایه را میخام در یک id قرار بگیرد که اینجا همچین اتفاقی نمیفته این سطر هرچند تعداد فرم باشه
$array1=$_POST['imgg'];
داخل یک سطر قرار میگیرد
اگه امکانش هست کمکم کنید با تشکر
باید ببینید که تگ img در فرم HTML به صورت آرایه تنظیم شده باشد، یعنی در قسمت name از علامت های [] استفاده شود، مثال:
<input name="img[]" type="file">
<input name="img[]" type="file">
<input name="img[]" type="file">
در این صورت قسمت foreach درست عمل خواهد کرد، البته قاعدتا با کدهای درج شده امکان تست و بررسی بیشتر وجود ندارد!
۱۴:۴۸ ۱۳۹۶/۰۴/۲۹
سلام
ممنون
پست های خوبی میذارید ولی سایتتون قالب زشتی داره
آدم بخاطر زشتی قالب نمیتونه پست رو بخونه
نسخه جدید سایت در حال تهیه است.
هنر
۱۹:۵۹ ۱۳۹۵/۰۸/۱۰
سلام دوباره
با استفاده از dump نتیجه زیر برام نشون داده شد
Notice: Undefined property: stdClass::$usercompany in C:\xampp\htdocs\1\index.php on line 6
NULL
Fatal error: Cannot use object of type stdClass as array in C:\xampp\htdocs\1\index.php on line 8
چرا نمیشه از stdClass استفاده کرد!
اینم محتویات فایل api من
حذف شد!
با دقت در خروجی کدهایتان یک نکته به چشم می خورد و آن هم تو در تو (دو سطحی) بودن آبجکت ها است، لذا برای خروجی گرفتن آبجکت سطح دو به این صورت عمل کنید:
echo $file->data->usercompany;
و اگر نتیجه به صورت آرایه بود، به صورت زیر:
echo $file[0]->data[0]->usercompany;
در صورتی که به این شیوه نیز مشکل حل نشود نیاز به برسی کدهای شما و تست آنلاین است!
اطلاعات بیشتر:
http://php.net/manual/en/function.json-decode.php
هنر
۰۰:۰۸ ۱۳۹۵/۰۷/۳۰
سلام ببخشید واسه خروجی گرفتن اطلاعات زیر باید به چه صورت عمل کنم؟
stdClass Object
(
[apiVersion] => 1.2
[data] => stdClass Object
(
[id] => 1
[activated] => 1
[username] => admin
[joindate] => 1473701025
[lastactivity] => 1476991806
[userfullname] => honar
[usercompany] => test
[usertel] => 213123123
[facebook] =>
)
)
به این صورت از فایل api اطلاعات رو دریافت و چاپ میکنم
$file = file_get_contents("http://localhost/api.php?t=u&q=admin");
print_r(json_decode($file));
اگر مقادیر دریافتی شما به صورت یک آبجکت است، می توانید به صورت نمونه زیر خروجی را چاپ کنید:
echo $file->id;
echo $file->usercompany;
در صورتی که مقادیر در یک آرایه دریافت می شود، به صورت نمونه زیر عمل کنید:
$array[0]->KEY
مثال:
echo $file[0]->id;
هادی
۲۲:۰۰ ۱۳۹۵/۰۷/۲۵
با سلام
ضمن تشکر از مطالب خوبتون یه سوال داشتم.
چطور میتونم به مقدار یک ارایه را بصورت حلقه قرار بدم.
مثلا فرض کنید میخوام حالت زیر را درست کنم فقط بجای مقداراشون (0,1,2,3,4,5,6,7) از حلقه استفاده کنم.
{"user":["0","1","2","3","4","5","6","7"],"credit":[0,0,0,0,0,0,0]}
از یه حلقه ی شبیه کد زیر :
array("user"=>while($user_fetch = mysql_fetch_object($query)){$user_fetch->user_id})
اگر درست متوجه سوالتان شده باشیم، بهتر است کدنویسی و ساختار برنامه خود را طوری طراحی کنید که حتی المقدور هر بخش، در قالب توابع پردازش و نتیجه برگردانده شود، در حالت مد نظر شما هم می توانید هر قسمت را که می خواهید به صورت حلقه باشد، در یک تابع قرار دهید و تابع را در آرایه استفاده کنید! تابع شما باید یک نتیجه برگرداند که نتیجه به عنوان مقدار آرایه جایگزین می شود، بدین صورت هم به هدفتان خواهید رسید هم کدنویسی بهینه تری خواهید داشت.
hadi
۱۶:۵۳ ۱۳۹۴/۱۲/۰۱
درود ممنون از پاسخ تان
درباره شرط بررسی کردم هر دوتای تاریخ ها یکی هست ولی موقع اعمال ارور میدهد
من 2 فایل دارم که براتون ارسال میکنم که کدها کامل هستند ممنون میشم نگاه کنید و تکه کدی که مشکل داره یا نیاز به تغییر داره را بفرمایید
http://tafrihot.com/myfile/files.zip
کدهای برنامه شما به هم وابسته هستند و به همین دلیل امکان تست و خطایابی فراهم نیست! در واقع تنها در یک اجرای حقیقی و با اتصال به دیتابیس می توان به مشکل پی برد (که قطعا فرآیندی زمانبر است)، به طور مثال کلاس DatetimeWrapper که در کدها استفاده شده در فایل دیگری در برنامه شما وجود دارد! متاسفانه امکان راهنمایی بیشتر در این خصوص به جهت محدودیت های زمانی وجود ندارد!
hadi
۲۳:۰۴ ۱۳۹۴/۱۱/۲۵
درود مجدد و تشکر بابت پاسخ تان در جدول دوم من خروجی بالا که یک آرایه هست را دارم با شرط where تست میکنم آیا کد من صحیح هست یا نیاز به تغییرات دارد شرط بر روی آرایه ها
قسمت پایین کد از لحظه خروجی :
}
echo $final_ch; // خروجی آیدی ها
}
$thisdate= DatetimeWrapper::getDatetimeOfNow() ; // نمایش زمان جاری
// درخواست بررسی آیدی های خروجی بر اساس تاریخ اتمام
$query = 'SELECT id FROM `#__enmasse_deal` WHERE id IN (' . $final_ch . ') AND end >= ('.$thisdate.')';
$db->setQuery($query);
$row = $db->loadObjectList();
ابتدا باید اصلاحی که در پاسخ قبل گفته شد انجام دهید، در مورد این سوال باید شیوه های خطایابی در PHP را بلد باشید، به طور مثال باید ببینید در برنامه شما از چه متدی برای نمایش خطاهای احتمالی پرس و جوها استفاده شده، با تکه کد درج شده نمی توان حدس زد که متد مربوط به نمایش خطا در برنامه شما چیست!، اما ظاهرا مشکل Syntax وجود ندارد، نکته دیگر اینکه مقایسه زمان در صورتی صحیح است که هر دو مقدار مقایسه شده به یک صورت (به فرض هر دو عدد صحیح یا هر دو طرف فرمت استاندارد تاریخ و زمان و نوع ستون دیتابیس DATETIME باشد).
hadi
۱۰:۱۰ ۱۳۹۴/۱۱/۲۵
درود من از دو جدول در Mysql میخوام اطلاعات لازم را استخراج نموده و به خروجی بفرستم
1. ابتدا آیدی های مرتبط با نام ارسالی که کار میکند
2. ایدی های خروجی را در جدول دیگری با شرط عدم اتمام بررسی و لیست جدیدی را استخراج کنم
نکته گزینه 1 بدون مشکل کار میکند ولی دومی چون شرط آرایه هست نیاز به راهنمایی دارد
نمونه کد:
<?php 
// استخراج آیدی های مرتبط با اسم
$query = 'SELECT deal_id FROM `#__enmasse_deal_category` WHERE category_id IN (' . $name . ') ';
$db->setQuery($query);
$row = $db->loadColumn();
if ($db->loadColumn() != ''){
$name= $db->loadColumn();
$final_ch = NULL;
foreach($name as $ch){
$final_ch .=','.$ch;
}
echo $final_ch; // خروجی آیدی ها
}
$thisdate= DatetimeWrapper::getDatetimeOfNow() ; // نمایش زمان جاری
// درخواست بررسی آیدی های خروجی بر اساس تاریخ اتمام
$query = 'SELECT id FROM `#__enmasse_deal` WHERE id IN (' . $final_ch . ') AND end >= ('.$thisdate.')';
$db->setQuery($query);
$row = $db->loadObjectList();
?>
ظاهرا خروجی نهایی که به قسمت IN می دهید به صورت صحیح نیست، به طور مثال این خروجی (متغیر final_ch) باید به صورت زیر باشد:
23, 59, 100
اما با توجه به قسمت foreach خروجی به این صورت ساخته می شود که درست نیست و اولین کاما اضافه است:
,23, 59, 100
برای رفع این مشکل می توانید کاما را با شرط به متغیر اضافه کنید، مثال (تست نشده):
$final_ch = NULL;
$loop = 0;
foreach($name as $ch){
if($loop > 0){
$final_ch .= ',' . $ch;
}
else{
$final_ch = $ch;
}
$loop++;
}
حسین
۰۲:۰۸ ۱۳۹۴/۱۰/۲۰
سلام میخواستم ببینم مشکل این کد چی هست ؟
اول چک میکنه اگه صفحه id دریافت کنه تایتل رو از دیتابیس فرا میخونه و چاپ میکنه اگر نه تایتل مورد نظر رو چاپ کنه !
قسمت اول انجام میشه ولی اگه id دریافت نکنه else رو چاپ نمیکنه !
$tit = NULL;
if ($post_id) {
$tit = "میلان دانلود | $rle";
}
else {
$tit = "میلان دانلود";
}
این کد در ظاهر هیچ مشکل خاصی ندارد، لذا ایراد باید در قسمت دیگری از برنامه باشد، همچنین برای بررسی وجود id بهتر است از شیوه زیر استفاده کنید:
if(isset($post_id) && $post_id > 0){
}
hadi
۰۲:۴۴ ۱۳۹۴/۱۰/۰۴
درود
چنانچه ما بخواهیم چندین ورودی را در یک تکست باکس قرار دهیم چه باید کرد ؟
من از کد زیر استفاده میکنم ولی چندین تکست باکس می سازه
<?php 
if ($_POST['sendsms']){
$mobile= $_POST['check'];
$final_ch = NULL;
foreach($mobile as $ch){
$final_ch .= $ch.' ';
}
echo $final_ch."<br/>";
echo '<input name="mobile" value="'.$final_ch.'" type="text"/>';
}
?>
در این صورت باید تنها مواردی در حلقه اضافه شوند که نیاز به تکرار دارند (کد بالا اصلاح شد!).
بهنام
۰۰:۲۴ ۱۳۹۴/۰۸/۱۳
سلام
عملگرد
$i++
و
++$i
چه تفاوتی با یکدیگر دارند؟
در حالت اول ابتدا مقدار فعلی متغیر برگردانده می شود، سپس یک واحد افزایش پیدا می کند، اما در حالت دوم ابتدا متغیر یک مقدار افزایش پیدا می کند، سپس نتیجه برگردانده می شود، مثال و اطلاعات بیشتر:
http://php.net/manual/en/language.operators.increment.php
chiro
۱۵:۲۷ ۱۳۹۴/۰۸/۱۲
واقعا مرسی ممنون از شما
دست شما درد نکنه
محمد
۱۲:۵۵ ۱۳۹۴/۰۶/۲۵
سلام خیلی ممنون بابت آموزش هاتون خیلی خیلی خوبن
فقط
اين يعنی چی
$i++
علامت ++ به معنی یک واحد افزایش است و لذا تکه کد درج شده برای افزایش متغیر i به میزان یک واحد (در هر دور حلقه) است.
fatemeh
۱۲:۵۶ ۱۳۹۴/۰۵/۱۳
سلام من نمی دونم چطوری میشه عکس رو داخل آرایه قرار داد (در php). لطفا اگه میشه راهنمایی کنید.
سوال واضح نیست! اگر منظور از عکس، یک رشته متنی است (شامل نام عکس یا هر چیز دیگری)، به راحتی این کار ممکن است که اگر به آموزش دقت کنید، متوجه می شوید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
1 × 7
20 × 20
=