اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

انا استخدم لارافل ولدي هذه القيم استعيدها من قاعدة البيانات

[{"ref":"01","hold":"1","temp":["OK"]},{"ref":"01","hold":"2","temp":["Hot"],{"ref":"02","hold":"33","temp":["Hot"]}

كيف يمكن ان احولها الى هذى الشكل

"01" : ["OK","HOT"]

يعني أدمج في حال كان اكثر من عنصر له نفس قيمة ref

Recommended Posts

  • 1
نشر

مرحبا تميم،

قم بتعريف مصفوفة تحوي القيمة المعادة،

عرف مصفوفة لتعيد الناتج،

قم بالمرور على المصفوفة الأولى استخرج البيانات وقم بإضافتهم للإجابة،

ثم يمكنك إعادة اليمة التي تريدها.

<?php

$json_string = '[
					{"ref":"01","hold":"1","temp":["OK"]},
					{"ref":"01","hold":"2","temp":["Hot"]},
					{"ref":"02","hold":"3","temp":["Hot"]}
				]';

//echo $json_string;

$arrays = json_decode($json_string);

//echo var_dump($arrays);

$result = [];

// echo var_dump($result);

foreach ($arrays as $obj) {

	if (empty($result[$obj -> ref])) {
		$result[$obj -> ref] = array();
	}

	foreach($obj -> temp as $element){
		//echo var_dump($element);

		//foreach($element as $e){
		//echo /*var_dump*/($element);

			array_push($result[$obj -> ref], $element);
		//}

		//array_push($result[$obj -> ref],$element);
	}
}

//echo var_dump($result);

//echo $result["01"];

foreach ($result["01"] as $x) {
	//echo var_dump($x);
	echo "$x\n";
}

?>

بالتوفيق

  • 0
نشر

أهلاً بك تميم,

يمكن ذلك إذا قمنا بتحويل البيانات إلى collection ومن ثم إستخدام الدالة groupBy حيث نحدد  باستخدام هذه الدالة على أي أساس سيتم عمل تجميع للبيانات المعطاة من خلال ال key الخاص بال array او ال collection ويكون على الشكل التالي:

$data = [
  ["ref" => "01", "hold" => "1", "temp" => ["OK"]],
  ["ref" => "01", "hold" => "2", "temp" => ["Hot"]],
  ["ref" => "02", "hold" => "33", "temp" => ["Hot"]]
];

$group_by_data = collect($data)->groupBy('ref');

حيث أفترضت هنا انه تم تحويل البيانات لشكل array, والدالة collect تقوم بتحويل البيانات المعطاه والتي هي array إلى collection وستكون النتائج على شكل collection أيضاً.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...