如何使用php从数组循环中获取唯一ID

如何使用php从数组循环中获取唯一ID,php,mysql,arrays,Php,Mysql,Arrays,我有以下数组,作为mysql结果集得到 Array ( [0] => Array ( [slug] => block_three_column [title] => CSG 2 [type_id] => 8 [entry_id] => 6 [stream_id] => 11 ) [1] =&g

我有以下数组,作为mysql结果集得到

Array
(
    [0] => Array
        (
            [slug] => block_three_column
            [title] => CSG 2
            [type_id] => 8
            [entry_id] => 6
            [stream_id] => 11
        )

    [1] => Array
        (
            [slug] => block_three_column
            [title] => CSG
            [type_id] => 8
            [entry_id] => 5
            [stream_id] => 11
        )

)

Array
(
    [0] => Array
        (
            [slug] => block_three_column
            [title] => CSG 2
            [type_id] => 8
            [entry_id] => 6
            [stream_id] => 11
        )

    [1] => Array
        (
            [slug] => block_three_column
            [title] => CSG
            [type_id] => 8
            [entry_id] => 5
            [stream_id] => 11
        )

)
这两个数组相似,我希望使用php获得唯一的条目id

我尝试了以下代码,但它再次生成了2个数组

foreach($block_results as $rowarr)
{
   foreach($rowarr as $k=>$v)
   {
        if($k == "entry_id")
        {
            $entid[] = $v; 
        }

   }
} 
非常感谢您的帮助。提前谢谢




您可以直接获取
条目id

$array = array(
    array(
        'slug' => 'block_three_column',
        'title' => 'CSG 2',
        'type_id' => 8,
        'entry_id' => 6,
        'stream_id' => 11
    ),
    array(
        'slug' => 'block_three_column',
        'title' => 'CSG',
        'type_id' => 8,
        'entry_id' => 5,
        'stream_id' => 11
    )
);

foreach ($array as $innerArray) {
    if (isset($innerArray['entry_id'])) {
        $entid[] = $innerArray['entry_id'];
    }
}

var_dump($entid);
输出为:

array
  0 => int 6
  1 => int 5

您可以直接获取
条目\u id

$array = array(
    array(
        'slug' => 'block_three_column',
        'title' => 'CSG 2',
        'type_id' => 8,
        'entry_id' => 6,
        'stream_id' => 11
    ),
    array(
        'slug' => 'block_three_column',
        'title' => 'CSG',
        'type_id' => 8,
        'entry_id' => 5,
        'stream_id' => 11
    )
);

foreach ($array as $innerArray) {
    if (isset($innerArray['entry_id'])) {
        $entid[] = $innerArray['entry_id'];
    }
}

var_dump($entid);
输出为:

array
  0 => int 6
  1 => int 5
试试这个:

PHP

$entid = array(); //Holds unique id's
foreach($block_results as $rowarr)
{
    //Make sure entry_id exists
    $entid[] = array_key_exists('entry_id',$rowarry) ? $rowarr['entry_id'] : false;
}
试试这个:

PHP

$entid = array(); //Holds unique id's
foreach($block_results as $rowarr)
{
    //Make sure entry_id exists
    $entid[] = array_key_exists('entry_id',$rowarry) ? $rowarr['entry_id'] : false;
}

假设您希望从数组中获得
entry\u id
的唯一值列表,并且可能有些数组没有设置
entry\u id

$entid = array();

foreach ( $array as $blockArray) {
    if ( isset( $blockArray['entry_id'] )
       && !in_array( $blockArray['entry_id'], $entid ) ) {
        $entid[] = $blockArray['entry_id'];
    }
}

var_dump( $entid );

假设您希望从数组中获得
entry\u id
的唯一值列表,并且可能有些数组没有设置
entry\u id

$entid = array();

foreach ( $array as $blockArray) {
    if ( isset( $blockArray['entry_id'] )
       && !in_array( $blockArray['entry_id'], $entid ) ) {
        $entid[] = $blockArray['entry_id'];
    }
}

var_dump( $entid );

您可以使用
array\u map()
而不是
foreach()
。例如:

$entry_ids = array_unique(
    array_map(
        function($v){ 
            return $v['entry_id'];
        }, 
        $array
    )
);
var_dump($entry_ids);

array\u unique()
用于从
array()
中删除重复的元素

您可以使用
array\u map()
而不是
foreach()
。例如:

$entry_ids = array_unique(
    array_map(
        function($v){ 
            return $v['entry_id'];
        }, 
        $array
    )
);
var_dump($entry_ids);

array\u unique()
用于从
array()
中删除重复的元素

如果它们总是相似且长度相同:

foreach ($array1 as $key => $value) {
    $firstValue = $array1[$key]['entry_id'];
    $secondValue = $array2[$key]['entry_id'];
}

不过,请记住,此解决方案对错误非常敏感。

如果它们总是相似且长度相同:

foreach ($array1 as $key => $value) {
    $firstValue = $array1[$key]['entry_id'];
    $secondValue = $array2[$key]['entry_id'];
}

不过,请记住,此解决方案对错误非常敏感。

像您的代码一样尝试以下操作:

$block_results = array(
    array(
        'slug' => 'block_three_column',
'title' => 'CSG 2',
'type_id' => 8,
'entry_id' => 6,
'stream_id' => 11
),
array(
'slug' => 'block_three_column',
'title' => 'CSG',
'type_id' => 8,
'entry_id' => 6,
'stream_id' => 11
),
array(
'slug' => 'block_three_column',
'title' => 'CSG',
'type_id' => 8,
'entry_id' => 7,
'stream_id' => 11
)
);

var_dump($block_results);
$entid=array();
if(count($block_results)>0)foreach($block_results as $rowarr)
{
    $entid[] = $rowarr['entry_id'];     
}
$entid=array_unique($entid);
var_dump($entid);
输出:

array
  0 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG 2' (length=5)
      'type_id' => int 8
      'entry_id' => int 6
      'stream_id' => int 11
  1 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG' (length=3)
      'type_id' => int 8
      'entry_id' => int 6
      'stream_id' => int 11
  2 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG' (length=3)
      'type_id' => int 8
      'entry_id' => int 7
      'stream_id' => int 11

array
  0 => int 6
  2 => int 7

像您的代码一样尝试以下操作:

$block_results = array(
    array(
        'slug' => 'block_three_column',
'title' => 'CSG 2',
'type_id' => 8,
'entry_id' => 6,
'stream_id' => 11
),
array(
'slug' => 'block_three_column',
'title' => 'CSG',
'type_id' => 8,
'entry_id' => 6,
'stream_id' => 11
),
array(
'slug' => 'block_three_column',
'title' => 'CSG',
'type_id' => 8,
'entry_id' => 7,
'stream_id' => 11
)
);

var_dump($block_results);
$entid=array();
if(count($block_results)>0)foreach($block_results as $rowarr)
{
    $entid[] = $rowarr['entry_id'];     
}
$entid=array_unique($entid);
var_dump($entid);
输出:

array
  0 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG 2' (length=5)
      'type_id' => int 8
      'entry_id' => int 6
      'stream_id' => int 11
  1 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG' (length=3)
      'type_id' => int 8
      'entry_id' => int 6
      'stream_id' => int 11
  2 => 
    array
      'slug' => string 'block_three_column' (length=18)
      'title' => string 'CSG' (length=3)
      'type_id' => int 8
      'entry_id' => int 7
      'stream_id' => int 11

array
  0 => int 6
  2 => int 7

您的意思是-如果
entry\u id
中的值在两个数组之间匹配,您想将其添加到
$entid
数组?还是每个数组中只有唯一的
entry\u id
值的列表?您的意思是-如果
entry\u id
中的值在两个数组之间匹配,您想将其添加到
$entid
数组?或每个数组中唯一的
条目id
值列表?谢谢Rob。工作很有魅力,谢谢你,罗布。工作很有魅力。