• 0

ما هو سبب رسالة expects parameter 2 to be string, array given في لغة PHP

قمت ببرمجة اسكربت تحويل العملات بالphp  لكن تظهر في ال صفحة :

 Warning: explode() expects parameter 2 to be string, array given in C:\AppServ\www\dollar.php on line 18

هذا هو ملف الـ dollar.php

<?php
function currency($amount,$from,$to){
	$amount=urlencode($_POST['amount']);
	$from=urlencode($_POST['from']);
	$to=urlencode($_POST['to']);
  
    	$url="http://www.google.com/ig/calculator?q=$amount$from=?$to";
	$ch=curl_init();
	$timeout=0;
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0(compatible;dows NT 6.1)" );
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$rawdata=curl_exec($ch);
	curl_close($ch); 

	$data=explode('"', $rawdata);
	$data=explode('  ', $data );
	$var=$data[0];

	return round($var,2);  //تقريب العدد الى رقمين
}

if(isset($_POST['convert'])) {
	echo currency($amount,$from,$to);
}

?>
<form action="<?php echo $PHP_SELF; ?>" method="post">
	<input type="text" name="amount" />
	from:<select name="from">
		<option value="EGP">EGP</option>
		<option value="USD">USD</option>
		<option value="EUR">EUR</option>
	</select>
		TO:<select name="to">
			<option value="EGP">EGP</option>
		<option value="USD">USD</option>
		<option value="EUR">EUR</option>

	</select>
	<input type="submit" name="convert" value="convert" />
</form>


 

dollar.php

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

الدالة explode في PHP تستقبل متغيرين كباراميتر والاثنين يجب ان يكونا نصين والرسالة تقول انك قمت باعطائها مصفوفة في الباراميتر الثاني وهذا خطأ .

 

الدالة مهمتها هي تحويل نص الي مصفوفة حسب محدد انت تعطيه للدالة في الباراميتر الاول يكون هذا المحدد يوجد في النص .

مثلا الكود التالي متغير نصي ولكن الكلمات يتم التفرقة بينهم بالرمز "," ستعطي للدالة الرمز "," في المتغير الاول والثاني تعطيها النص او الكلمات التي تريد تحويلها الي مصفوفة :

 

$names = "one, two, three";

$names_as_arr = explode(',', $names);

print_r($names_as_arr);


// النتيجة

// Array ( [0] => one [1] => two [2] => three ) 

 

ارجو ان يكون واضحا السبب انك اعطيت للدالة في الباراميتر الثاني مصفوفة بينما هي تتوقع نص .

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ On 3/11/2018 at 06:25 قال روب رات:

شكرا لك فهمت ولكن كيف اصحح الخطا فانا مبتدا ارجو ان تساعدني محمد

 

الحل اخي هو ان لا تعطي للدالة explode مصفوفة

 

ذكرت لك سابقا ان الدالة explode تقوم بارجاع مصفوفة وانها لا تستقبل مصفوفات في الباراميترز وانما نصوص فقط وشاهد الكود الذي كتبته السطر الأول المتغير $data عبارة عن مصفوفة وانت اعطيته للدالة .

 

$data=explode('"', $rawdata);
$data=explode('  ', $data );

 

لا اعرف ماهي نتيجة المتغير $rawdata ولا اعرف ماذا تريد ان تفعل لذالك شرحت لك سبب الخطأ

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • -1

شكرا لك فهمت ولكن كيف اصحح الخطا فانا مبتدا ارجو ان تساعدني محمد

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن