PDA

View Full Version : سوال: یونیک کردن مقدار ها بر اساس اسم در ارایه ای که عناصر آن آبجکت هستند



neda_f
چهارشنبه 01 اسفند 1397, 15:59 عصر
سلام من یه آرایه دارم که عناصر اون آبجکت هست مثل این




array (size=99)
0 =>
object(WP_Term)[12786]
public 'term_id' => int 189
public 'name' => string '1500' (length=4)
public 'slug' => string '1500' (length=4)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 189
public 'taxonomy' => string 'product_cat' (length=11)
public 'description' => string '' (length=0)
public 'parent' => int 151
public 'count' => int 1
public 'filter' => string 'raw' (length=3)
public 'meta_value' => null
public 'cat_ID' => int 189
public 'category_count' => int 1
public 'category_description' => string '' (length=0)
public 'cat_name' => string '1500' (length=4)
public 'category_nicename' => string '1500' (length=4)
public 'category_parent' => int 151
1 =>
object(WP_Term)[12785]
public 'term_id' => int 190
public 'name' => string '1500' (length=4)
public 'slug' => string '1500' (length=4)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 190
public 'taxonomy' => string 'product_cat' (length=11)
public 'description' => string '' (length=0)
public 'parent' => int 151
public 'count' => int 1
public 'filter' => string 'raw' (length=3)
public 'meta_value' => null
public 'cat_ID' => int 190
public 'category_count' => int 1
public 'category_description' => string '' (length=0)
public 'cat_name' => string '1500' (length=4)
public 'category_nicename' => string '1500' (length=4)
public 'category_parent' => int 151



می خوام بر اساس اسم یونیک بشن این تایع رو می ذارم صفحه ارور میشه : array_unique() و با این دو تابع هم می خوام عناصرش رو به آرایه تبدیل کنم بعد یونیک کنم ولی هر کدوم رو می ذارم هیچ فرقی نمی کنه و ساختار آرایه تغییر نمی کنه



$array = objectToArray($termssize);
$gedrfedrfe = (array)$termssize;


ممنون میشم راهنمایی کنید

plague
چهارشنبه 01 اسفند 1397, 17:53 عصر
توی یه حلقه foreach بزار و آرایه رو و آبجکت هاش رو بریز توی یک آرایه دوم .. منتها کلیدهای آرایه دوم رو اون فیلد یونیک آبجکت بزار که مقادیر تکراری رونویس بشن

neda_f
پنج شنبه 02 اسفند 1397, 09:09 صبح
توی یه حلقه foreach بزار و آرایه رو و آبجکت هاش رو بریز توی یک آرایه دوم .. منتها کلیدهای آرایه دوم رو اون فیلد یونیک آبجکت بزار که مقادیر تکراری رونویس بشن


سلام خیلی ممنون که جواب دادید
این الان کدی هست که آرایه اول رو تولید می کنه



$termssize = get_categories(array(
'taxonomy' => 'product_cat',
'hide_empty' => false
));


و با این کد می خوام یونیکش کنم




foreach ($termssize as $value){
$array[][$value->term_id] = $value->name;
$childrenuniq = array_unique($array);
$childrenuniq = (object)$childrenuniq;

}
var_dump($childrenuniq);

ولی وقتی اینو وردامپ می کنم فقط یک خروجی میده همه ی خروجی رو به صورت یونیک شده نمی ده نمی دونم مشکل کجاست

neda_f
پنج شنبه 02 اسفند 1397, 09:53 صبح
توی یه حلقه foreach بزار و آرایه رو و آبجکت هاش رو بریز توی یک آرایه دوم .. منتها کلیدهای آرایه دوم رو اون فیلد یونیک آبجکت بزار که مقادیر تکراری رونویس بشن

من این روش رو درست متوجه نشدم چی کار باید بکنم ولی با این کد stdclass رو به ارایه تبدیل کردم




$array = json_decode(json_encode($termssize), true);


به این صورت شد


array (size=99)
0 =>
array (size=17)
'term_id' => int 189
'name' => string '1500' (length=4)
'slug' => string '1500' (length=4)
'term_group' => int 0
'term_taxonomy_id' => int 189
'taxonomy' => string 'product_cat' (length=11)
'description' => string '' (length=0)
'parent' => int 151
'count' => int 1
'filter' => string 'raw' (length=3)
'meta_value' => null
'cat_ID' => int 189
'category_count' => int 1
'category_description' => string '' (length=0)
'cat_name' => string '1500' (length=4)
'category_nicename' => string '1500' (length=4)
'category_parent' => int 151
1 =>
array (size=17)
'term_id' => int 190
'name' => string '1500' (length=4)
'slug' => string '1500' (length=4)
'term_group' => int 0
'term_taxonomy_id' => int 190
'taxonomy' => string 'product_cat' (length=11)
'description' => string '' (length=0)
'parent' => int 151
'count' => int 1
'filter' => string 'raw' (length=3)
'meta_value' => null
'cat_ID' => int 190
'category_count' => int 1
'category_description' => string '' (length=0)
'cat_name' => string '1500' (length=4)
'category_nicename' => string '1500' (length=4)
'category_parent' => int 151
2 =>


اما وقتی این دستور رو می ذارم


$childrenuniq = array_unique($array);

فقط یه خروجی نشون میده و نتیجه اینجوری میشه



array (size=1)
0 =>
array (size=17)
'term_id' => int 189
'name' => string '1500' (length=4)
'slug' => string '1500' (length=4)
'term_group' => int 0
'term_taxonomy_id' => int 189
'taxonomy' => string 'product_cat' (length=11)
'description' => string '' (length=0)
'parent' => int 151
'count' => int 1
'filter' => string 'raw' (length=3)
'meta_value' => null
'cat_ID' => int 189
'category_count' => int 1
'category_description' => string '' (length=0)
'cat_name' => string '1500' (length=4)
'category_nicename' => string '1500' (length=4)
'category_parent' => int 151


فقط همین یه دونه خروجی رو نشون میده چرا اینجوری میشه دوستان لطفا راهنمایی کنید نمی دونم چجوری درستش کنم

plague
پنج شنبه 02 اسفند 1397, 20:23 عصر
اینجوری بنویس




$array_of_objects = [ object , object ] ;
$unique_array = [] ;
foreach($array_of_objects as $object )
$unique_array[$object->unique_property] = $object ;