Hash 形式的数组解答

、假设有一个数组类似以下情形:

$datas = array('1q2w3e4r5t' => array('uuid' => '1q2w3e4r5t', 'index' => 1, 'name' => 'abc'),
'1a2s3d4f5g' => array('uuid' => '1a2s3d4f5g', 'index' => 2, 'name' => 'def'),
'1z2x3c4v5b' => array('uuid' => '1z2x3c4v5b', 'index' => 3, 'name' => 'xyz'),
...
);

该数组由 key => array 的 Hash 形式组成,每个 key 的值同时也是元素 array 中 uuid 字段的值。
现请编写 at_array_header() 函数,判断指定的Key(即uuid字段)是否处于数组的开始位置,使用真假作为返回值。

/**
* 函数说明:...
*/
function at_array_header($datas, $uuid) {
/** 在这里输入函数实现代码 */
foreach($datas as $val)


}



试题2、接上题,请编写 get_next_array_element() 函数,根据指定的Key(即uuid字段)查找数组中位于其后的相邻元素,如果没有下一个元素则返回Null。

/**
* 函数说明:...
*/
function get_next_array_element($datas, $uuid) {
/** 在这里输入函数实现代码 */
}


function at_array_header($datas, $uuid) {
/** 在这里输入函数实现代码 */
foreach ($datas as $key=>$val){
if($val['uuid']==$uuid&&$datas[$key]['index']==1){
return true;
}
return false;
}
}

echo at_array_header($datas,'1q2w3e4r5t');


function get_next_array_element($datas, $uuid) {
/** 在这里输入函数实现代码 */
foreach ($datas as $key=>$val){
$newArray[$val['index']] = $val;
}
foreach ($newArray as $key=>$val){
if ($val['uuid']==$uuid&&isset($newArray[$key+1])) {
return $datas[$newArray[$key+1]['uuid']];
}
}
}
print_r(get_next_array_element($datas,'1a2s3d4f5g'));

Comments