الفرق بين المراجعتين ل"PHP/array column"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
ط (إضافة عنوان الصفحة والتصنيفات)
سطر 1: سطر 1:
= الدالة array_column()‎ =
 
 
<noinclude>{{DISPLAYTITLE:<code>array_column()‎</code>}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:<code>array_column()‎</code>}}</noinclude>
 
(PHP 5 >= 5.5.0, PHP 7)
 
(PHP 5 >= 5.5.0, PHP 7)
  
تعيد هذه الدالة القيم المتواجدة بعمود واحد للمصفوفة التي يتم تمريرها كمعامل للدالة. 
+
تعيد الدالة <code>array_column()‎</code> القيم المتواجدة بعمود واحد للمصفوفة التي تُمرَّر كمعامل للدالة. 
  
 
== الوصف ==
 
== الوصف ==
سطر 10: سطر 9:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
تعيد هذه الدالة القيم من عمود واحد في المصفوفة ‎$input، هذه القيم مسجلة بالمفتاح المحدد بالمعامل ‎$column_key. اختياريا، يمكن تحديد عمود آخر لتستخدمه الدالة كمفتاح للمصفوفة التي تعيدها عن طريق المعامل ‎$index_key. 
+
تعيد الدالة <code>array_column()‎</code> القيم من عمود واحد في المصفوفة ‎<code>$input</code>، هذه القيم مسجلة بالمفتاح المحدد بالمعامل <code>‎$column_key</code>. اختياريًا، يمكن تحديد عمود آخر لتستخدمه الدالة كمفتاح للمصفوفة التي تعيدها عن طريق المعامل ‎<code>$index_key</code>.
  
 
== المعاملات ==
 
== المعاملات ==
input
 
  
مصفوفة متعددة الأبعاد أو مصفوفة من الكائنات تستخرج هذه الدالة القيم منها. يمكن استعمال الخصائص عامة الوصول مباشرةً في حالة استخدام مصفوفة من الكائنات. يجب أن يوفر الصنف "class" تعريفًا للدوال السحرية ‎__get()‎ و ‎__isset()‎ حتى يمكن استعمال الخصائص المحمية أو خاصة الوصول.
+
=== <code>input</code> ===
 +
مصفوفة متعددة الأبعاد أو مصفوفة من الكائنات تستخرج هذه الدالة القيم منها. يمكن استعمال الخصائص عامة الوصول مباشرةً في حالة استخدام مصفوفة من الكائنات. يجب أن يوفر الصنف (class) تعريفًا [[PHP/OOP/magic|للدوال السحرية]] ‎<code>__get()‎</code> و ‎<code>__isset()‎</code> حتى يمكن استعمال الخصائص المحمية أو خاصة الوصول.
  
column_key
+
=== <code>column_key</code> ===
 
+
عمود القيم الذي ستعيده الدالة. يمكن أن تكون هذه القيمة عددًا صحيحًا يمثل مفتاح العامود الذي ستعيده الدالة، أو مفتاحًا نصيًا في حالة المصفوفات الترابطية، أو اسم إحدى خصائص الكائنات. إذا تساوت قيمة هذا المعامل مع <code>NULL</code> فستعيد الدالة المصفوفة أو الكائنات كاملة (هذه الميزة مفيدة في حالة استخدامها مع المعامل <code>‎$index_key</code> بقصد إعادة فهرسة المصفوفة).
عمود القيم الذي ستعيده الدالة. يمكن أن تكون هذه القيمة عددًا صحيحًا يمثل مفتاح العامود الذي ستعيده الدالة، أو مفتاحًا نصيًا في حالة المصفوفات الترابطية، أو اسم إحدى خصائص الكائنات. إذا تساوت قيمة هذا المعامل مع NULL فستعيد الدالة المصفوفة أو الكائنات كاملة (هذه الميزة مفيدة في حالة استخدامها مع المعامل ‎$index_key بقصد إعادة فهرسة المصفوفة).
 
 
 
index_key
 
  
 +
=== <code>index_key</code> ===
 
يحدد هذا المعامل العمود الذي سيُستخدَم كمفتاح للمصفوفة التي ستعيدها الدالة. قد تكون قيمة مفتاح الفهرسة عددًا صحيحًا يمثل مفتاح العمود، أو مفتاحًا نصيًا. 
 
يحدد هذا المعامل العمود الذي سيُستخدَم كمفتاح للمصفوفة التي ستعيدها الدالة. قد تكون قيمة مفتاح الفهرسة عددًا صحيحًا يمثل مفتاح العمود، أو مفتاحًا نصيًا. 
  
سطر 30: سطر 27:
 
== سجل التغيرات ==
 
== سجل التغيرات ==
 
{| class="wikitable"
 
{| class="wikitable"
|الإصدار
+
!الإصدار
|الوصف
+
!الوصف
 
|-
 
|-
 
|PHP 7.0.0
 
|PHP 7.0.0
|أضافت إمكانية تمرير المعامل ‎$input كمصفوفة من الكائنات.
+
|أضافت إمكانية تمرير المعامل <code>‎$input</code> كمصفوفة من الكائنات.
|} 
+
|}
  
== أمثلة ==
+
== أمثلة ==
مثال رقم 1:<syntaxhighlight lang="php">
+
المثال 1: الحصول على عمود «الاسم الأول» من مصفوفة فيها سجلات<syntaxhighlight lang="php">
 
<?php
 
<?php
 
// Array representing a possible record set returned from a database
 
 
 
$records = array(
 
$records = array(
 
+
    array(
   array(
+
        'id' => 2135,
 
+
        'first_name' => 'John',
       'id' => 2135,
+
        'last_name' => 'Doe',
 
+
    ),
       'first_name' => 'John',
+
    array(
 
+
        'id' => 3245,
       'last_name' => 'Doe',
+
        'first_name' => 'Sally',
 
+
        'last_name' => 'Smith',
   ),
+
    ),
 
+
    array(
   array(
+
        'id' => 5342,
 
+
        'first_name' => 'Jane',
       'id' => 3245,
+
        'last_name' => 'Jones',
 
+
    ),
       'first_name' => 'Sally',
+
    array(
 
+
        'id' => 5623,
       'last_name' => 'Smith',
+
        'first_name' => 'Peter',
 
+
        'last_name' => 'Doe',
   ),
+
    )
 
 
   array(
 
 
 
       'id' => 5342,
 
 
 
       'first_name' => 'Jane',
 
 
 
       'last_name' => 'Jones',
 
 
 
   ),
 
 
 
   array(
 
 
 
       'id' => 5623,
 
 
 
       'first_name' => 'Peter',
 
 
 
       'last_name' => 'Doe',
 
 
 
   )
 
 
 
 
);
 
);
 
+
 
$first_names = array_column($records, 'first_name');
 
$first_names = array_column($records, 'first_name');
 
 
print_r($first_names);
 
print_r($first_names);
 +
?>
  
?>
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
Array
 
Array
 
 
(
 
(
 
+
    [0] => John
   [0] => John
+
    [1] => Sally
 
+
    [2] => Jane
   [1] => Sally
+
    [3] => Peter
 
 
   [2] => Jane
 
 
 
   [3] => Peter
 
 
 
 
)
 
)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
مثال رقم 2:<syntaxhighlight lang="php">
+
المثال 2: الحصول على عمود «الاسم الأخير» من المصفوفة التي تحتوي على السجلات، مع فهرسته باستخدام عمود <code>id</code><syntaxhighlight lang="php">
 
<?php
 
<?php
 
+
// سنستخدم نفس المصفوفة الموجودة في المثال السابق
// Using the $records array from Example #1
 
 
 
 
$last_names = array_column($records, 'last_name', 'id');
 
$last_names = array_column($records, 'last_name', 'id');
 
 
print_r($last_names);
 
print_r($last_names);
 +
?>
  
?>
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
Array
 
Array
 
 
(
 
(
 
+
    [2135] => Doe
   [2135] => Doe
+
    [3245] => Smith
 
+
    [5342] => Jones
   [3245] => Smith
+
    [5623] => Doe
 
 
   [5342] => Jones
 
 
 
   [5623] => Doe
 
 
 
 
)
 
)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
مثال رقم 3:<syntaxhighlight lang="php">
+
المثال 3: الحصول على عمود أسماء المستخدمين من الخاصية العامة username التابعة لأحد الكائنات<syntaxhighlight lang="php">
 
<?php
 
<?php
  
 
class User
 
class User
 
 
{
 
{
 +
    public $username;
  
   public $username;
+
    public function __construct(string $username)
 
+
    {
   public function __construct(string $username)
+
        $this->username = $username;
 
+
    }
   {
 
 
 
       $this->username = $username;
 
 
 
   }
 
 
 
 
}
 
}
  
 
$users = [
 
$users = [
 
+
    new User('user 1'),
   new User('user 1'),
+
    new User('user 2'),
 
+
    new User('user 3'),
   new User('user 2'),
 
 
 
   new User('user 3'),
 
 
 
 
];
 
];
  
 
print_r(array_column($users, 'username'));
 
print_r(array_column($users, 'username'));
 +
?>
  
?>
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
Array
 
Array
 
 
(
 
(
 
+
    [0] => user 1
   [0] => user 1
+
    [1] => user 2
 
+
    [2] => user 3
   [1] => user 2
 
 
 
   [2] => user 3
 
 
 
 
)
 
)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
مثال رقم 4:<syntaxhighlight lang="php">
+
المثال رقم 4: الحصول على عمود الأسماء من الخاصية الخاصة <code>name</code> لأحد الكائنات باستخدام [[PHP/OOP/magic|الدالة السحرية]] ‎<code>__get()‎</code><syntaxhighlight lang="php">
 
<?php
 
<?php
  
 
class Person
 
class Person
 
 
{
 
{
 +
    private $name;
  
   private $name;
+
    public function __construct(string $name)
 +
    {
 +
        $this->name = $name;
 +
    }
  
   public function __construct(string $name)
+
    public function __get($prop)
 
+
    {
   {
+
        return $this->$prop;
 
+
    }
       $this->name = $name;
 
 
 
   }
 
 
 
   public function __get($prop)
 
 
 
   {
 
 
 
       return $this->$prop;
 
 
 
   }
 
 
 
   public function __isset($prop) : bool
 
 
 
   {
 
 
 
       return isset($this->$prop);
 
 
 
   }
 
  
 +
    public function __isset($prop) : bool
 +
    {
 +
        return isset($this->$prop);
 +
    }
 
}
 
}
  
 
$people = [
 
$people = [
 
+
    new Person('Fred'),
   new Person('Fred'),
+
    new Person('Jane'),
 
+
    new Person('John'),
   new Person('Jane'),
 
 
 
   new Person('John'),
 
 
 
 
];
 
];
  
 
print_r(array_column($people, 'name'));
 
print_r(array_column($people, 'name'));
 +
?>
  
?>
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
نتيجة المثال السابق:<syntaxhighlight lang="php">
 
Array
 
Array
 
 
(
 
(
 
+
    [0] => Fred
   [0] => Fred
+
    [1] => Jane
 
+
    [2] => John
   [1] => Jane
 
 
 
   [2] => John
 
 
 
 
)
 
)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
إذا لم تتواجد الدالة __‎isset() فستعيد الدالة array_column()‎ مصفوفة فارغة.
+
إذا لم تتواجد الدالة ‎<code>__‎isset()‎</code> فستعيد الدالة <code>array_column()</code>‎ مصفوفة فارغة.
  
== المصادر ==
+
== مصادر ==
 
* [http://php.net/manual/en/function.array-column.php صفحة array_column من توثيق PHP الرسمي.]
 
* [http://php.net/manual/en/function.array-column.php صفحة array_column من توثيق PHP الرسمي.]
 
[[تصنيف:PHP]]
 
[[تصنيف:PHP]]
 
[[تصنيف:PHP Function]]
 
[[تصنيف:PHP Function]]
 
[[تصنيف:PHP Array]]
 
[[تصنيف:PHP Array]]

مراجعة 03:30، 14 مارس 2018

(PHP 5 >= 5.5.0, PHP 7)

تعيد الدالة array_column()‎ القيم المتواجدة بعمود واحد للمصفوفة التي تُمرَّر كمعامل للدالة. 

الوصف

array array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] )

تعيد الدالة array_column()‎ القيم من عمود واحد في المصفوفة ‎$input، هذه القيم مسجلة بالمفتاح المحدد بالمعامل ‎$column_key. اختياريًا، يمكن تحديد عمود آخر لتستخدمه الدالة كمفتاح للمصفوفة التي تعيدها عن طريق المعامل ‎$index_key.

المعاملات

input

مصفوفة متعددة الأبعاد أو مصفوفة من الكائنات تستخرج هذه الدالة القيم منها. يمكن استعمال الخصائص عامة الوصول مباشرةً في حالة استخدام مصفوفة من الكائنات. يجب أن يوفر الصنف (class) تعريفًا للدوال السحرية__get()‎ و ‎__isset()‎ حتى يمكن استعمال الخصائص المحمية أو خاصة الوصول.

column_key

عمود القيم الذي ستعيده الدالة. يمكن أن تكون هذه القيمة عددًا صحيحًا يمثل مفتاح العامود الذي ستعيده الدالة، أو مفتاحًا نصيًا في حالة المصفوفات الترابطية، أو اسم إحدى خصائص الكائنات. إذا تساوت قيمة هذا المعامل مع NULL فستعيد الدالة المصفوفة أو الكائنات كاملة (هذه الميزة مفيدة في حالة استخدامها مع المعامل ‎$index_key بقصد إعادة فهرسة المصفوفة).

index_key

يحدد هذا المعامل العمود الذي سيُستخدَم كمفتاح للمصفوفة التي ستعيدها الدالة. قد تكون قيمة مفتاح الفهرسة عددًا صحيحًا يمثل مفتاح العمود، أو مفتاحًا نصيًا. 

القيم المعادة

تعيد هذه الدالة مصفوفةً من القيم تمثل عمودًا واحدًا من المصفوفة التي ستُعالَج. 

سجل التغيرات

الإصدار الوصف
PHP 7.0.0 أضافت إمكانية تمرير المعامل ‎$input كمصفوفة من الكائنات.

 أمثلة

المثال 1: الحصول على عمود «الاسم الأول» من مصفوفة فيها سجلات

<?php
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);
 
$first_names = array_column($records, 'first_name');
print_r($first_names);
?>

نتيجة المثال السابق:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

المثال 2: الحصول على عمود «الاسم الأخير» من المصفوفة التي تحتوي على السجلات، مع فهرسته باستخدام عمود id

<?php
// سنستخدم نفس المصفوفة الموجودة في المثال السابق
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>

نتيجة المثال السابق:

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

المثال 3: الحصول على عمود أسماء المستخدمين من الخاصية العامة username التابعة لأحد الكائنات

<?php

class User
{
    public $username;

    public function __construct(string $username)
    {
        $this->username = $username;
    }
}

$users = [
    new User('user 1'),
    new User('user 2'),
    new User('user 3'),
];

print_r(array_column($users, 'username'));
?>

نتيجة المثال السابق:

Array
(
    [0] => user 1
    [1] => user 2
    [2] => user 3
)

المثال رقم 4: الحصول على عمود الأسماء من الخاصية الخاصة name لأحد الكائنات باستخدام الدالة السحرية__get()‎

<?php

class Person
{
    private $name;

    public function __construct(string $name)
    {
        $this->name = $name;
    }

    public function __get($prop)
    {
        return $this->$prop;
    }

    public function __isset($prop) : bool
    {
        return isset($this->$prop);
    }
}

$people = [
    new Person('Fred'),
    new Person('Jane'),
    new Person('John'),
];

print_r(array_column($people, 'name'));
?>

نتيجة المثال السابق:

Array
(
    [0] => Fred
    [1] => Jane
    [2] => John
)

إذا لم تتواجد الدالة ‎__‎isset()‎ فستعيد الدالة array_column()‎ مصفوفة فارغة.

مصادر