نمایش نتایج 1 تا 4 از 4

نام تاپیک: دستور array_intersect_assoc

  1. #1

    دستور array_intersect_assoc

    سلام میخواهم بدونم دستور array_intersect_assoc

    آیا حالتی داره که بشه تنظیم اگر بین مثلا سه آرایه خانه صفر دوتاشون هم کلیدش با هم برابر و هم مقدارشون آن ها را هم نشون بده و بگو از چه آرایه ای هستن
    مثلا اینجا

    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"= >"yellow");
    $a2=array("a"=>"red","b"=>"green","g"=>"blue");
    $a3=array("a"=>"red","b"=>"green","g"=>"blue");

    خروجی دستور اینه

    Array ( [a] => red [b] => green )




    ولی من میخوام بگه "a"=>"red" و "b"=>"green"برای همه آرایه ها است و "g"=>"blue" برای آرایه دو و سه
    آیا دستوری وجود دارد برای اینکار
    یا اگر باید خودم دستور را بنویسم میشه کمکم کنید چجوری اینکار را کنم
    ممنون میشم

  2. #2

    نقل قول: دستور array_intersect_assoc

    خب این کار شما یعنی این که کل آرایه ها رو در نظر بگیره و فقط اون خونه هایی که در تنها یک آرایه موجودند رو حذف کنه؛ درسته؟

  3. #3

    نقل قول: دستور array_intersect_assoc

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    خب این کار شما یعنی این که کل آرایه ها رو در نظر بگیره و فقط اون خونه هایی که در تنها یک آرایه موجودند رو حذف کنه؛ درسته؟
    اینجا آره
    ولی من میخوام هر بار بیاد مثلا خانه صفر از همه آرایه ها را درنظر بگیره و و بگه کدوما خانه صفرشون با هم برابر است
    امکانش هست ؟؟؟؟؟؟
    ممنون میشم کمکم کنید

  4. #4
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: دستور array_intersect_assoc

    میخای خونه ها رو چک کنی یا مقادیر رو چک کنی ؟
    مثلا داری
    "a"=>"red"

    آیا میخای ببینی مقدار red تو کدوم آرایه ها تکرار شده بدون اینکه خونه مهم باشه

    یا میخای ببینی کدوم آرایه ها خونه a آنها برابر با red هستش

    یا فرقی نمیکنه هردوش ؟!


    حالت اول

    $result = [] ;

    $stack = [

    'a1' => ["a"=>"red","b"=>"green","c"=>"blue","d"=>"yell ow"] ,
    'a2' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
    'a3' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
    ];

    function check_array( $value , $stack , $result ){


    foreach ($stack as $k=>$array )
    {
    if(in_array( $value , $array))
    {
    if(isset($result[$value]) && !in_array( $k , $result[$value]))
    $result[$value][] = $k ;
    else
    $result[$value] = [$k] ;
    }
    }

    return $result ;

    }


    foreach ($stack as $array )
    {
    foreach ($array as $k=>$v )
    $result = check_array( $v , $stack , $result );
    }


    echo "<pre>";
    print_r($result);
    echo "</pre>";


    خروجی


    Array
    (
    [red] => Array
    (
    [0] => a1
    [1] => a2
    [2] => a3
    )

    [green] => Array
    (
    [0] => a1
    [1] => a2
    [2] => a3
    )

    [blue] => Array
    (
    [0] => a1
    [1] => a2
    [2] => a3
    )

    [yellow] => Array
    (
    [0] => a1
    )

    )



    حالت دوم




    $result = [] ;

    $stack = [

    'a1' => ["a"=>"red","b"=>"green","c"=>"blue","d"=>"yell ow"] ,
    'a2' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
    'a3' => ["a"=>"black","b"=>"green","g"=>"blue"] ,
    'a4' => ["a"=>"black","b"=>"green","g"=>"blue"] ,
    ];

    function check_array( $key , $value , $stack , $result ){

    if(!isset($result[$key]))
    $result[$key] = [] ;

    $inner_stack = [] ;
    foreach ($stack as $k=>$array )
    {
    if(isset($array[$key]))
    $inner_stack[$k] = $array[$key];
    }

    foreach ($inner_stack as $k=>$v)
    {
    if(!isset($result[$key][$v]))
    $result[$key][$v] = [];

    if(!in_array( $k , $result[$key][$v] ))
    $result[$key][$v][] = $k ;

    }



    return $result ;

    }


    foreach ($stack as $array )
    {
    foreach ($array as $k=>$v )
    $result = check_array( $k , $v , $stack , $result );
    }


    echo "<pre>";
    print_r($result);
    echo "</pre>";



    خروجی

        [a] => Array
    (
    [red] => Array
    (
    [0] => a1
    [1] => a2
    )

    [black] => Array
    (
    [0] => a3
    [1] => a4
    )

    )

    [b] => Array
    (
    [green] => Array
    (
    [0] => a1
    [1] => a2
    [2] => a3
    [3] => a4
    )

    )

    [c] => Array
    (
    [blue] => Array
    (
    [0] => a1
    )

    )

    [d] => Array
    (
    [yellow] => Array
    (
    [0] => a1
    )

    )

    [g] => Array
    (
    [blue] => Array
    (
    [0] => a2
    [1] => a3
    [2] => a4
    )

    )

تاپیک های مشابه

  1. حرفه ای: روش های جاگزین کردن دستورات مشابه خروجی و ورودی به جای دستوراتی مثل printf و یا scanf
    نوشته شده توسط motherboard در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: دوشنبه 29 اردیبهشت 1393, 22:50 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 23 مهر 1392, 05:57 صبح
  3. پاسخ: 3
    آخرین پست: چهارشنبه 03 فروردین 1390, 23:51 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •