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

السؤال

نشر

اعمل على اداة لتصميم صفحات الويب وكتب pdf, واستخدمت المصفوفات المترابطه لتخزين البيانات وحفظها في ملف json، 

وهذه المصفوافات تحتوي على عدد لا نهائي من المصفوفات بداخلها، 

المشكله هي صعوبة الاضافة لاحد تلمصفوفزت التي تقع داخل مصفوفه وهكذا 

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

0,0,0

وهذا يعني ان المصفوفة من اليمين ذات المفتاح 0 تقع داخل مصفوفه مفتاحها صفر ايضا وهكذا 

المشكلة عندما اريد اضافة عنصر لاي مصفوفه بنائا على هذه السلسله 0،0،0

عملت برمجة ونجحت فقط بالتضافه على المصفوفات التي مفتاحها صفر اما اذا زاد المفتاح عن صفر يقوم بالتعديل على المصفوفه السابقه ذات مفتاح صفر 

ممكن حل

Recommended Posts

  • 0
نشر (معدل)
بتاريخ 5 ساعات قال Hassan Hedr:

يرجى إضافة الشيفرة البرمجية التي توصلت إليها ضمن نص السؤال حتى يتوضح استفسارك وتحصل على إجابة واضحة 

    <?php
    $arr = json_decode('[ {"ta":"div1","pr":{"class":"dffg","name":"ggg"} ,"tx":[{"ta":"nav","pr":{"class":"dffg","name":"ggg"} ,"tx":[{"ta":"div2","pr":{"class":"dffg","name":"ggg"} ,"tx":[{"ta":"font1","pr":{"class":"dffg","name":"ggg"} ,"tx":"im font1","ht":"<font @Prop#>@text#</font>"}],"ht":"<div @Prop#>@text#</div>"},{"ta":"font2","pr":{"class":"dffg","name":"ggg"} ,"tx":[],"ht":"<font @Prop#>@text#</font>"}],"ht":"<nav @Prop#>@text#</nav>"}],"ht":"<div @Prop#>@text#</div>"}]', true);//المصفوفه العامه


  
    
    
    function hop($arr,$g=''){
      //دالة لعرض المصفوفات بشكل اوتماتيكي 
for($i=0;$i<count($arr);$i++){
 if(is_array($arr[$i]["tx"])){
   $fs = $g;
   $g=$g.','.$i;
  $as = hop($arr[$i]["tx"],$g);
  $g= $fs;
  foreach($arr[$i]['pr'] as $key => $value){

      $ffg[] = ' '. $key. '="'. $value. '" ';

    }
    $gg = implode (' ', $ffg);
    $asd[] = $arr[$i]['ta'].'add'. $g.','. $i. '<br>'.$as;
    unset($ffg);
  
 } else{
   
  foreach($arr[$i]['pr'] as $key => $value){
      $ffg[] = ' '. $key. '="'. $value. '" ';
    }
    
    $gg = implode (' ', $ffg);
    $asd[] = $arr[$i]['tx']. $arr[$i]['ta'].$g.','. $i. '<br>';
    unset($ffg);
    
} 
} 
if(isset($asd)){
return '<div style="padding: 4px; margin: 4px; border: 2px solid #000" >'. implode (' ', $asd).'</div>';
} 
} 
echo hop($arr);//عرض المصفوفات بشكل منسق ومقسم وبالترتيب 


echo json_encode($arr). '<br><br><br><br>';

function add($arr,$add,$keys){
  //دالة لأضافة العناصر الجديده 
  //تقبل ثلاثه وصائط الزاميه الاول المصفوفه العامه والثاني العنصر الجديد قد يكون مصفوفه او نص فقط الوسيط الثالث سلسله نصيه بارقام مفاتيح المصفوفه الهدف
  //توجد المصفوفات دائما داخل المفتاح tx في ا
  if($keys!= ''){
function goo($arr){
  
  return $arr;
} 


$aru = explode(',',$keys);
unset($aru[0]);
$text = implode (',', $aru);
unset($aru);
$aru = explode(',', $text) ;
//نحول سلسة المفاتيح إاى مصفوفه

  for($i=0;$i<count($aru);$i++){
    //نعمل حلقة تكرار للمصفوفه السابقه وبنائا عليها نقوم بتفكيك المصفوفه العامه حسب المفاتيح التي نحصل عليها من المصفوفه السابقه وحلقة التكرار، نخزن كل مصفوفه داخل مصفوفه عاديه جديده
    if($i == 0){
      $xxx[] = goo($arr[$aru[$i]]['tx']) ;
      
      if(count($aru) == 1){
        $arr[$aru[$i]]['tx'][] = $add;
        
      }
    }else{
     $xxx[] = goo($xxx[$i-1][$aru[$i]]['tx']);
     
    if($i == count($aru)-1){
     
      for($e=count($aru)-1;$e>-1;$e--){
        //هنا نقوم بعكس العمليه السابقه ونقوم بتجميع المصفوفه العامه بعد اضافة تلعنصر الجديد للمصفوفه الهدف التي حصلنا على مفاتيحها من سلسلة الارقام الممررة للداله
        if($e == count($aru)-1){
          
          $xxx[$e][] = $add;//هنا نضيف العنصر الجديد
          
        }else{
          
          $xxx[$e][$aru[$e]]['tx'] = $xxx[$e+1];
          
          
          if($e == 0){
            $arr[$aru[$e]]['tx'] = $xxx[$e];
          }
        }
     
    }
    } 
   

 } 
} 
} else{
  $arr[] = $add;
}

echo hop($arr);

}
$add = ["ta"=>"font","pr"=>["class"=>"dffg","name"=>"ggg"] ,"tx"=>"font is a great tool that can be used for any ","ht"=>"@text#</font>"] ;//عنصر جديد نريد اضافته لاحد المصفوفات المتداخله عبر سلسلة نص المفاتيح
add($arr,$add,',0,0,0');//سيضيفها في المصفوفه الداخليه الثالثه
echo json_encode($arr). '<br><br><br><br>';
?>

طبعا الكود هذا يعمل بشكل سليم وجيد جدا ويمك اضافة اي عنصر لاي مصفوفه تقع داخل مصفوفه وهكذا باستخدام الارقام، في الكود استخدمت الارقام 
,0,0,0
سيقوم باضافه العنصر للمصفوفه االداخليه الثالثه، المشكله كل المشكله استخدمت ارقام غير الاصفار مثلا 
,0,0,1 او 

,0,1 وهكذا 
  

تم التعديل في بواسطة Hassan Hedr
تنسيق الشيفرة
  • 0
نشر
بتاريخ 52 دقائق مضت قال علي الكاسر:

طبعا الكود هذا يعمل بشكل سليم وجيد جدا ويمك اضافة اي عنصر لاي مصفوفه تقع داخل مصفوفه وهكذا باستخدام الارقام، في الكود استخدمت الارقام 
,0,0,0
سيقوم باضافه العنصر للمصفوفه االداخليه الثالثه، المشكله كل المشكله استخدمت ارقام غير الاصفار مثلا 
,0,0,1 او 

,0,1 وهكذا 
  

الشيفرة غير مقروءة أسماء المتغيرات ضمن التوابع مبهمة وتحتاج إلى توضيح، يمكنك حصر المشكلة ضمن تابع ما (مثلًا المشكلة في التابع add) وتعديل أسماء المتغيرات لتعبر عن البيانات التي تحويها وتصبح مقروءة بشكل أفضل، وإرفاق مثال لاستخدام سليم ومثال لاستخدام به مشكلة حتى يتوضح سؤالك بشكل أفضل ونستطيع المساعدة

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...