بصراحة أول مرة تمر علي .. طيب ممكن أحد يقول لي كيف نتعامل معها داخل الفنكشن؟!
وخلينا ننتقل إلى دالة in_array
تحياتي، أشرف السمهوري
بصراحة أول مرة تمر علي .. طيب ممكن أحد يقول لي كيف نتعامل معها داخل الفنكشن؟!
وخلينا ننتقل إلى دالة in_array
تحياتي، أشرف السمهوري
اظن تستخدم عن طريق explode ثم من خلال foreachونعمل switch هكذا اظن ولكن لا زالت الفكرة مشتتة بعقلي :eek3:
بخصوص دالة in_array
الا خاصية الarray داخل array:court:كود PHP:
function _in_array($key,$array){
if($array[$key] != null){
return true;
}
else{
return false;
}
}
هي ليست string حتى تستطيع القيام بذلك
لها طريقة لكن عن اذنكم بروح اصلي واذا رجعت سويتها لكم
__________________
تابعني على Twitter
حل على السريع ..
حل اخر باستخدام التعبيرات القياسيةكود PHP:
function inarray($arr,$searchword)
{
foreach($arr as $val)
{
if($val==$searchword) return true;
}
return false;
}
كود PHP:
function inarray($arr,$searchword)
{
$return = false;
foreach($arr as $val)
{
if(preg_match("/^$val$/",$searchword)) $return = true;
}
return $return;
}
التعديل الأخير تم بواسطة مهندس مصرى ; 27-05-2009 الساعة 10:17 PM
__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
تعديل بسيط .. لا فائدة لتعريف متغير لل return فالدالة تقوم بعمل return مرة واحدة
كود PHP:
function inarray($arr,$searchword)
{
foreach($arr as $val)
{
if(preg_match("/^$val$/",$searchword)) return true;
}
return false;
}
__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
فكرة جيدة exchangeboss .. حيث لا تحتاج الى عمل foreach ولا اي لوب ..
لكن البحث يتم عن طريق ال value وليس ال key
التعديل الأخير تم بواسطة مهندس مصرى ; 27-05-2009 الساعة 10:25 PM
__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
معذرة لاني اكتب الكود سريعا
يا لدلاختي
عدت للمانيوال وعندما فتحت صفحة extract اكتشفت أنك لاتستطيع أن تقوم بعمل flag أكثر من مرة سوى مع EXTR_REFS فقط
يعني
EXTR_OVERWRITE | EXTR_REFS
EXTR_PREFIX_ALL | EXTR_REFS
EXTR_PREFIX_INVALID | EXTR_REFS
بالتالي لاتستطيع عمل ذلك
EXTR_PREFIX_INVALID | EXTR_PREFIX_ALL
EXTR_OVERWRITE | EXTR_PREFIX_ALL | EXTR_SKIP
إلخ
وهذا تعديلي الكامل والنهائي لدالة extract بإذن الله وأي خطأ آخر بلغوني:
كود PHP:
function extract_alt(&$var_array, $extract_type = EXTR_OVERWRITE, $prefix = '')
{
$count = 0;
if (!is_array($var_array))
return false;
foreach ($var_array AS $key => $value)
{
if (is_array($var_array["$key"]))
{
extract_alt($var_array["$key"], $extract_type, $prefix);
}
else
{
switch ($extract_type)
{
case EXTR_OVERWRITE:
$GLOBALS["$key"] = $value;
$count++;
break;
case EXTR_SKIP:
if (!isset($GLOBALS["$key"]))
{
$GLOBALS["$key"] = $value;
$count++;
}
break;
case EXTR_PREFIX_SAME:
if (isset($GLOBALS["$key"]))
{
$GLOBALS[$prefix . '_' . $key] = $value;
}
else
{
$GLOBALS["$key"] = $value;
}
$count++;
break;
case EXTR_PREFIX_ALL:
$GLOBALS[$prefix . '_' . $key] = $value;
$count++;
break;
case EXTR_PREFIX_INVALID:
if (preg_match('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#', $key))
$GLOBALS[$prefix . '_' . $key] = $value;
break;
case EXTR_IF_EXISTS:
if (isset($GLOBALS["$key"]))
{
$GLOBALS["$key"] = $value;
$count++;
}
break;
case EXTR_PREFIX_IF_EXISTS:
if (isset($GLOBALS["$key"]))
{
$GLOBALS[$prefix . '_' . $key] = $value;
$count++;
}
break;
}
if ($extract_type & EXTR_REFS)
{
$GLOBALS["$key"] =& $var_array["$key"];
$count++;
}
}
}
return $count;
}
__________________
تابعني على Twitter
وهذه محاولتي
كود PHP:
function _in_array($needle,$haystack,$strict=false){
foreach($haystack as $value){
if(($strict === true && $value === $needle) || ($strict === false && $value == $needle)) return true;
}
return false;
}
__________________
محمد حمود.
@مدمن نت دالة جميلة هناك فقط فاصلة منقوطة في السطر 12
لكن هل هناك طريقة لاستقبال عدة flags ؟ EXTR_OVERWRITE | EXTR_REFS
__________________
محمد حمود.
هذه محاكاتي البسيطة لدالة in_array:
لم أعلم مافائدة المعامل الثالث لذلك لم أقم بتضمينهكود PHP:
function in_array_alt($needle, $haystack)
{
if (!is_array($haystack))
return false;
foreach ($haystack AS $key => $value)
if ($needle == $value)
return true;
}
__________________
تابعني على Twitter
كلا، لايوجد هناك طريقة .. لأن الـ flags الخاصة بدالة extract كلها عبارة عن أرقام متتالية
بالتالي لاتستطيع استقبال أكثر من flags
عدا EXTR_REFS فهي عبارة عن قيمة تحمل الرقم 256 وهي الوحيدة التي يمكن استقبالها مع flag آخر
وشكراً لك على الملاحظة وتم وضع الفاصلة
__________________
تابعني على Twitter
طيب هل يمكن استقبال اكثر من فلاج مع دالة في ال PHP level ؟
حاولت اجرب الامر لكن تقريبا لا يمكن
----------------------------
اسف لم اقرا الاجابة جيدا .. وصلت المعلومة
التعديل الأخير تم بواسطة mr_m ; 27-05-2009 الساعة 11:33 PM
__________________
محمد حمود.
هناك دوال أخرى تستقبل flag .. لكن لا أعلم هل تستقبل أكثر من واحدة أم لا
بإمكانك إنشاء دالة خاصة بك وعمل flags واستقبال عدد لانهائي منها لو أردت باستخدام define وذو قيم محددة تتعلق بالأنظمة الثنائية وليست أية قيم
إذا أردت أن أشرح الأمر بشكل أعمق فاعلمني بذلك لأقوم بإنشاء موضوع جديد فيما يخص ذلك
- من يستطع محاكاة دالة ftp_connect
لكي أسهل لكم الأمر، استخدموا fsockopen
__________________
تابعني على Twitter
لا تحتاج الى تفكير ..
كود PHP:
fsockopen($host,$port,$errno, $errstr, $time_out);
__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير