قمت بإنهاء المحاكاة وسأرفق الكود بعد قليل
قمت بإنهاء المحاكاة وسأرفق الكود بعد قليل
__________________
لا إله الا الله محمد رسول الله
فضائية الأقصى :: عينك على الوطن
نيلسات: 10872 عمودي 27500
عربسات: 12054 عمودي 27500
إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..
دالة extract لم تنته بعد .. سننهيها أولاً بجميع وظائفها ثم ننتقل إلى in_array
حسناً أخي أشرف أنا سأعرض الآن ما انهيته حتى اللحظة، حتى ننتقل للأمور التالية في هذه الدالة وننتهي من محاكاتها 100%
كود PHP:
function _extract($array, $prefix) {
foreach($array as $key=>$val) {
(isset($GLOBALS["$key"])) ? $GLOBALS[$prefix."_$key"] = $val : $GLOBALS["$key"] = $val;
}
}
التعديل الأخير تم بواسطة MPHP ; 27-05-2009 الساعة 02:57 PM
__________________
لا إله الا الله محمد رسول الله
فضائية الأقصى :: عينك على الوطن
نيلسات: 10872 عمودي 27500
عربسات: 12054 عمودي 27500
إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..
بعد ما عرضته يكون تبقى علينا أن ننهي محاكاة الجزء الثاني من الدالة وهو extract_type
يلا شدوا الهمة
__________________
لا إله الا الله محمد رسول الله
فضائية الأقصى :: عينك على الوطن
نيلسات: 10872 عمودي 27500
عربسات: 12054 عمودي 27500
إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..
عملت منها باقي لي ثلاث لاني لم افهم عملها هل لك بشرحها اخي اشرف :1power:
كود PHP:
function _extract($array,$extract_type=null,$prefix=null){
if(isset($extract_type)){
switch($extract_type){
case EXTR_OVERWRITE:
foreach ($array as $key => $val) {
$GLOBALS[$key] = $val;
}
break;
case EXTR_SKIP:
foreach ($array as $key => $val) {
if(!isset($GLOBALS[$key])){
$GLOBALS[$key] = $val;
}
}
break;
case EXTR_PREFIX_SAME:
foreach ($array as $key => $val) {
if(!isset($GLOBALS[$key])){
$GLOBALS[$key] = $val;
}
else{
$GLOBALS[$prefix.'_'.$key] = $val;
}
}
break;
case EXTR_PREFIX_ALL:
foreach ($array as $key => $val) {
$GLOBALS[$prefix."_".$key] = $val;
}
break;
case EXTR_PREFIX_INVALID:
break;
case EXTR_IF_EXISTS:
break;
case EXTR_PREFIX_IF_EXISTS:
break;
case EXTR_REFS:
break;
default:
case EXTR_OVERWRITE:
foreach ($array as $key => $val) {
$GLOBALS[$key] = $val;
}
}
}
return '';
}
طيب الشباب يبدوا مشغولين! أنا راح أنهيها
__________________
لا إله الا الله محمد رسول الله
فضائية الأقصى :: عينك على الوطن
نيلسات: 10872 عمودي 27500
عربسات: 12054 عمودي 27500
إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..
ممتاز جداً اخي exchangeboss
يبدوا أن لا حاجة لإرفاق محاكاتي كاملة
__________________
لا إله الا الله محمد رسول الله
فضائية الأقصى :: عينك على الوطن
نيلسات: 10872 عمودي 27500
عربسات: 12054 عمودي 27500
إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..
ههههه انا حاكيتها نفس الشي وبقي لي 3
المشكلة ان أحدها يختص بالقيم الخاطئة Invalid وهي EXTR_PREFIX_INVALID ولم أستطع أن أحصرها .. أعتقد أن جزءاً منها الأرقام .. لكن ليس لدي علم ما عمل الدالة في كل حالاتها .. وكذلك EXTR_PREFIX_IF_EXISTS لم أفهم ما الفرق بينها وبين EXTR_PREFIX_SAME ..كود PHP:
function extract_sim($var_array, $extract_type = EXTR_OVERWRITE, $prefix = '') {
$num = 0;
if ($extract_type == EXTR_OVERWRITE || $extract_type == EXTR_PREFIX_ALL) {
$prefix = ($extract_type == EXTR_PREFIX_ALL ? $prefix .'_' : '');
foreach ($var_array as $key => $value) {
$GLOBALS[$prefix . $key] = $value;
$num++;
}
} elseif ($extract_type == EXTR_SKIP) {
foreach ($var_array as $key => $value) {
if (!isset($GLOBALS[$key])) {
$GLOBALS[$key] = $value;
$num++;
}
}
} elseif ($extract_type == EXTR_IF_EXISTS) {
foreach ($var_array as $key => $value) {
if (isset($GLOBALS[$key])) {
$GLOBALS[$key] = $value;
$num++;
}
}
} elseif ($extract_type == EXTR_PREFIX_SAME) {
foreach ($var_array as $key => $value) {
if (isset($GLOBALS[$key])) {
$GLOBALS[$prefix .'_'. $key] = $value;
} else {
$GLOBALS[$key] = $value;
}
$num++;
}
}
return $num;
}
وكذلك لم أفهم المطلوب بالضبط في EXTR_REFS ..
في الحقيقة بسبب ضيق الوقت لم أحاول أكثر مما حاولت .. لكن كل فترة إن شاء الله بتفشش في هالموضوع من الملل من الدراسة ..
منتظر إكمال حل الدالة ..
تحياتي، أشرف السمهوري
جميل اخي اشرف انا ساحفظ الدالة التي عملتها اذا وجدت وقت ساكملها ان شاء الله
هذه الدالة كاملة ماعدا أني لم أفهم بالضبط ماعمل EXTR_PREFIX_INVALID !
أشرف، EXTR_REFS واضحة جداً فهي تعني reference
كود PHP:
function extract_alt(&$var_array, $extract_type = EXTR_OVERWRITE, $prefix = '')
{
$count = 0;
if (!is_array($var_array) OR $extract_type AND !in_array($extract_type, array(EXTR_OVERWRITE, EXTR_SKIP, EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID, EXTR_IF_EXISTS, EXTR_PREFIX_IF_EXISTS)))
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:
// I don't know how that works!
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;
case EXTR_REFS:
$GLOBALS["$key"] =& $var_array["$key"];
$count++;
break;
}
}
}
return $count;
}
__________________
تابعني على Twitter
شكلي جيت متأخر
يبدو انه متبقي استخدام EXTR_PREFIX_INVALID وهو يعني اضافة ال prefix مع القيم التي لا يصلح تعريفها كمتغيرات
وجدت هذا التعبير للتحقق مها في صفحة المانيوال في محاكاة شبيهة
كود PHP:
preg_match( '#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#', $key )
__________________
محمد حمود.
ممتاز جداً جداً ...
بالنسبة للريفرنس مش عارف ليش ما فهمتها مع انها فعلاً واضحة بس ما في وقت الواحد يقعد يدقق بالكلام .. هههه <<< حجة !
طيب يالله ادمجوا التعبير القياسي اللي وضعه mr_m في الدالة ..
وفي حدا عنده فكرة عن هذا ؟
كيف يمكن السماح بأكثر من "فلاج" ؟ هل OR'ing تعني استخدام معامل OR ؟ وكيف يمكن استخدامه هنا ؟You can use this flag on its own or combine it with any other flag by OR'ing the extract_type .
تحياتي، أشرف السمهوري
عملتها على السريع تفضل
كود PHP:
function extract_alt(&$var_array, $extract_type = EXTR_OVERWRITE, $prefix = '')
{
$count = 0;
if (!is_array($var_array) OR $extract_type AND !in_array($extract_type, array(EXTR_OVERWRITE, EXTR_SKIP, EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID, EXTR_IF_EXISTS, EXTR_PREFIX_IF_EXISTS)))
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;
case EXTR_REFS:
$GLOBALS["$key"] =& $var_array["$key"];
$count++;
break;
}
}
}
return $count;
}
ال OR'ing flags معناه فعلا استخدام | ..
كود PHP:
foo($arg1,FOO_FLAG | FOO_ANOTHER_FLAG);
التعديل الأخير تم بواسطة mr_m ; 27-05-2009 الساعة 08:20 PM
__________________
محمد حمود.
قصدهم كذا
كود PHP:
extract($var_array, EXTR_OVERWRITE | EXTR_SKIP | EXTR_PREFIX_SAME);
__________________
تابعني على Twitter