یکشنبه ۱۵ مهر ۱۴۰۳

Sunday, October 6, 2024 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 مطالب بیشتر:
تعریف و استفاده از متغیر (Variable) در PHP
حلقه for، foreach و while در PHP
توابع کار با آرایه در PHP - بخش اول
توابع (Functions) در PHP
آموزش برنامه نویسی وب با PHP
دیدگاه
more ۵۲ دیدگاه برای این مطلب ارسال شده است.
more دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
hadi
۱۶:۵۳ ۱۳۹۴/۱۲/۰۱
درود ممنون از پاسخ تان
درباره شرط بررسی کردم هر دوتای تاریخ ها یکی هست ولی موقع اعمال ارور میدهد
من 2 فایل دارم که براتون ارسال میکنم که کدها کامل هستند ممنون میشم نگاه کنید و تکه کدی که مشکل داره یا نیاز به تغییر داره را بفرمایید
http://tafrihot.com/myfile/files.zip
کدهای برنامه شما به هم وابسته هستند و به همین دلیل امکان تست و خطایابی فراهم نیست! در واقع تنها در یک اجرای حقیقی و با اتصال به دیتابیس می توان به مشکل پی برد (که قطعا فرآیندی زمانبر است)، به طور مثال کلاس DatetimeWrapper که در کدها استفاده شده در فایل دیگری در برنامه شما وجود دارد! متاسفانه امکان راهنمایی بیشتر در این خصوص به جهت محدودیت های زمانی وجود ندارد!
هادی
۲۲:۰۰ ۱۳۹۵/۰۷/۲۵
با سلام
ضمن تشکر از مطالب خوبتون یه سوال داشتم.
چطور میتونم به مقدار یک ارایه را بصورت حلقه قرار بدم.
مثلا فرض کنید میخوام حالت زیر را درست کنم فقط بجای مقداراشون (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})
اگر درست متوجه سوالتان شده باشیم، بهتر است کدنویسی و ساختار برنامه خود را طوری طراحی کنید که حتی المقدور هر بخش، در قالب توابع پردازش و نتیجه برگردانده شود، در حالت مد نظر شما هم می توانید هر قسمت را که می خواهید به صورت حلقه باشد، در یک تابع قرار دهید و تابع را در آرایه استفاده کنید! تابع شما باید یک نتیجه برگرداند که نتیجه به عنوان مقدار آرایه جایگزین می شود، بدین صورت هم به هدفتان خواهید رسید هم کدنویسی بهینه تری خواهید داشت.
هنر
۰۰:۰۸ ۱۳۹۵/۰۷/۳۰
سلام ببخشید واسه خروجی گرفتن اطلاعات زیر باید به چه صورت عمل کنم؟
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;
هنر
۱۹:۵۹ ۱۳۹۵/۰۸/۱۰
سلام دوباره
با استفاده از 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
۱۴:۴۸ ۱۳۹۶/۰۴/۲۹
سلام
ممنون
پست های خوبی میذارید ولی سایتتون قالب زشتی داره
آدم بخاطر زشتی قالب نمیتونه پست رو بخونه
نسخه جدید سایت در حال تهیه است.
احسان
۱۲:۳۶ ۱۳۹۶/۰۸/۱۱
سلام خسته نباشید من دو تا ارایه دارم که میخام بصورت یکجا وارد دیتابیس بشه و از دستور 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 درست عمل خواهد کرد، البته قاعدتا با کدهای درج شده امکان تست و بررسی بیشتر وجود ندارد!
هادی
۰۰:۴۷ ۱۳۹۶/۱۱/۰۵
درود
از لینک زیر داده هایی را فراخوانی میکنم ولی نیاز دارم فقط گزینه های داخل "" لیست بشن امکانش هست راهنمایی کنید
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>';
}
?>
هادی
۱۲:۱۹ ۱۳۹۷/۰۳/۰۲
درود
ورودی دارم به این صورت
جواب           =      ورودی
1.24138 = 0.0012413815715941036
0.03148 = 0.031476292181984486
18.93456 = 1.8934560280281587E-05
6.12259 = 6.122587574031539
69.96 = 6.9962506052576167E-15
که باید ورودی ها را بشکل عددی (جواب) خروجی بدم منتها مشکل اینه که نمیتونم فرمولی بنویسم که خروجی مناسب بهمون بده
من از دستورات زیر استفاده میکنم
$string = "6.9962506052576167E-15";
$float = (float) ($string*10000000000000000);
number_format($float,2);

$string = "1.8934822905948474E-05";
$float = (float) ($string*1000000);
number_format($float,2);
که برای ورودی های مختلف متفاوت هستند ، راهکاری برای این مورد ندارید و یا اینکه ورودی را تجزیه تحلیل کنیم و براساس آن پیش بریم؟
ظاهرا و در نگاه اجمالی هیچ قانون خاصی برای تعریف الگوی سراسری در ورودی و خروجی ها مشاهده نمی شود؟! قاعدتا اولین مرحله برای نوشتن یک فرمول کلی پیدا کردن قانون و الگوی منطقی است، به فرض اگر اعداد از مقدار خاصی بزرگتر باشند 2 رقم اعشار بگیرند و...
hadi
۰۹:۴۷ ۱۳۹۷/۰۷/۱۲
آرایه ای به شکل زیر داریم
$a=[
ali,
hosein,
amirali,
reza,
setayesh,
mohamadalireza];
میخواهیم با جستجو ردیف کلماتی که ali , reza در آنها وجود دارد را نمایش دهیم
نتیجه :
0
2
3
5
من یه کد را اجرا میکنم ولی فقط اسم خالی را پیدا میکند و ترکیبی و دوتا اسم را نمایش نمیدهد . چه راه کاری پیشنهاد میدهید؟
$Objects = 'ali';
$keys = array_keys($a,$Objects);
echo "<pre>";
print_r($keys);
echo "</pre>";
به روشهای مختلف این کار شدنی است، به طور مثال استفاده از آرایه زیر:
function searchArray($array, $term) {
@$result = array();

foreach($array as $key => $value) {
if(stripos($value, $term) !== false) {
$result[] = $key;
}
}

return $result;
}

$keys = searchArray($a, $Objects);
اگر می خواهید چند عبارت را جستجو کنید باید این کد را توسعه دهید یا به فرض آیتم ها را به صورت آرایه داشته باشید و در حلقه foreach تابع را فراخوانی کنید.
۱۲:۱۵ ۱۳۹۸/۰۶/۰۲
مرسی خوب بود
میثم
۰۹:۲۲ ۱۳۹۹/۰۱/۳۱
سلام.
من تابعی نوشتم که mime رو میگیره و exe تحویل میده.
function test($string){
$Exens = array(
'image/gif' => 'gif',
'application/msword' => 'doc',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx',
'font/ttf' => 'ttf'
);

return $Exens[$string];
}
حالا می خوام برای فلان mime دو عدد exe رو برگردونه.
مثلا برای application/msword هم doc و هم docx رو برگردونه اینو چطور باید بنویسم؟
خروجی تابع هم می تواند به صورت رشته باشد و هم آرایه، رشته در حالتی که فقط یک مقدار مد نظر است و آرایه در حالتی که چند مقدار به عنوان نتیجه برگردانده می شود، به فرض:
'application/msword'   =>   array('doc', 'docx'),
در هنگام استفاده از تابع بررسی می کنیم اگر خروجی یک آرایه بود در حلقه for یا foreach پردازش مورد نظر را انجام می دهیم:
$mime = test('application/msword');
if(is_array($mime)){
for($i = 0; $i < count($mime); $i++){
echo mime[$i] . '<br>';
}
} else {
echo $mime;
}
میثم
۱۵:۴۸ ۱۳۹۹/۰۱/۳۱
عالی بود. ممنونم.
ناهید
۰۹:۱۵ ۱۳۹۹/۰۵/۲۶
سلام
من یک متغیر آرایه در php تعریف کرده ایم میخواهم آنرا در جدول html مرتب و نمایش بدم. لطفا کمکم کنید
برای نمایش آرایه در جدول می توانید از نمونه تابع زیر استفاده کنید:
<?php
function buildHTMLTable($array_1, $array_2){
$html = '<table border="1">';
$html .= '<tr>';

foreach($array_1[0] as $key => $value){
$html .= '<th>' . htmlspecialchars($value) . '</th>';
}

$html .= '</tr>';

foreach($array_2 as $key => $value){
$html .= '<tr>';

foreach($value as $k => $v){
$html .= '<td>' . htmlspecialchars($v) . '</td>';
}

$html .= '</tr>';
}

$html .= '</table>';

return $html;
}

$array_1 = array(
array(1, 2, 3)
);

$array_2 = array(
array('key_11' => 'value_11', 'key_12' => 'value_12', 'key_13' => 'value_13'),
array('key_21' => 'value_21', 'key_22' => 'value_22', 'key_23' => 'value_23')
);

echo buildHTMLTable($array_1, $array_2);
?>
این تابع را می توانید متناسب با نیازتان ویرایش کنید.
haghif
۱۵:۱۴ ۱۳۹۹/۰۹/۲۴
<?php
//storing & retrieving data from global vairables
$usr1=$_POST ["Name"];
$email=$_POST ["Email"];
$pass=$_POST ["pass"];
//Multi-dimension array
$Arry1= array(
'user1'=> array ("$user1","$email","$pass"),
//first array
'user2'=> array ('Username2','DEF@gmail.com','password2') //2nd array
);
//Data is Retrieved from HTML from
echo "<br/> <h1> <font color ='red'> User1 </font> </h1>";
foreach ($Arry1 ['user1'] as $val){
echo "<br/>".$val;
}
//user2 array
echo "<br/> <h1> <font color='red'> User2 </font> </h1>";
foreach ($Arry1 ['user2'] as $val){
echo "<br/>".$val;
}
?>
اشکالات این کد چیه ؟؟؟😣
متغیر usr1 در خط سوم خطای تایپی دارد (user1 صحیح است)، خط 3 تا 5 را هم به شکل زیر تغییر دهید:
@$user1=$_POST ["Name"];
@$email=$_POST ["Email"];
@$pass=$_POST ["pass"];
علیرضا
۱۸:۲۴ ۱۴۰۰/۰۲/۱۹
من میخوام از ارایه ورود که یسری کلمه است اوردم و بعد میخوام اینارو توی جدول تیبل قرار بدم میشه برم توضیحش بدین
لطفا یک نمونه آرایه درج و مشخص کنید منظورتان جدول به صورت HTML است یا جدول دیتابیس؟، اگر یک اسکرین شات از نتیجه نهایی مد نظر به صورت طراحی شده به فرض در فتوشاپ ارسال کنید بهتر می شود راهنمایی کرد.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
4 × 1
20 × 20
=
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
سیدعباسی
با سلام من میخوام از متن زیر لینکش رو دربیارم و در آخر مقدار 3088 رو بصورت خروجی نهایی داشته باشم با...
۱۴۰۳/۰۷/۰۷

مجتبی
سلام وقت بخیر میخوام یک روز به تاریخ دریافتی اضافه شه ممنون میشم راهنمایی کنید
۱۴۰۳/۰۶/۲۰

پرتو
سلام خوبید؟ خسته نباشیذ ببخشید مزاحم شدم می خواستم بگم من به شما ایمیل زدم ولی هنوز شما جواب ندادین می تونم بپرسم چرا سوال...
۱۴۰۳/۰۶/۱۵
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.