اذهب إلى المحتوى
  • 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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

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

 

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

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

 

$names = "one, two, three";

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

print_r($names_as_arr);


// النتيجة

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

 

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 3/11/2018 at 06:25 قال روب رات:

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

 

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

 

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

 

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

 

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...