PHP에서 배열의 인덱스 값 가져 오기
배열이 있습니다.
$list = array('string1', 'string2', 'string3');
주어진 값에 대한 인덱스를 얻고 싶습니다 (예 : 1
for string2
및 2
for string3
)
내가 원하는 것은 배열의 문자열 위치입니다.
- string1은 0입니다.
- string2는 1입니다.
- string3은 2입니다.
이것을 달성하는 방법?
array_search
그것을하는 방법입니다.
array_search ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : mixed
로부터 문서 :
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
배열을 수동으로 반복하고 인덱스를 찾을 수 있지만 그에 대한 함수가있을 때 왜 그렇게합니까? 이 함수는 항상 키를 반환하며 연관 및 일반 배열에서 잘 작동합니다.
그중 몇 가지만 수행하고 / 또는 배열 크기가 큰 경우 array_search를 사용하여 올바른 길을 가고있는 것입니다.
$list = array('string1', 'string2', 'string3');
$k = array_search('string2', $list); //$k = 1;
모두 (또는 많이) 원하는 경우 루프가 더 잘할 수 있습니다.
foreach ($list as $key => $value) {
echo $value . " in " . $key . ", ";
}
// Prints "string1 in 0, string2 in 1, string3 in 2, "
다른 사람들은 array_search()
값이 발견되는 배열 요소의 키를 제공하는 것을 제안했습니다 . 다음을 사용하여 배열 키가 연속적인 정수인지 확인할 수 있습니다 array_values()
.
$list = array(0=>'string1', 'foo'=>'string2', 42=>'string3');
$index = array_search('string2', array_values($list));
print "$index\n";
// result: 1
당신은 당신의 질문에서 쓸모 array_search()
가 없다고 말했습니다 . 이유를 설명해 주시겠습니까? 당신은 무엇을 시도했고 그것이 당신의 필요를 어떻게 충족시키지 못했습니까?
// 또는 배열 구조 고려 :
$array = array(
'string1' => array('a' => '', 'b' => '', 'c' => ''),
'string2' => array('a' => '', 'b' => '', 'c' => ''),
'string3' => array('a' => '', 'b' => '', 'c' => ''),
);
// 그냥
function findIndexOfKey($key_to_index,$array){
return array_search($key_to_index,array_keys($array));
}
// 실행 됨
print "\r\n//-- Method 1 --//\r\n";
print '#index of: string1 = '.findIndexofKey('string1',$array)."\r\n";
print '#index of: string2 = '.findIndexofKey('string2',$array)."\r\n";
print '#index of: string3 = '.findIndexofKey('string3',$array)."\r\n";
// 또는
print "\r\n//-- Method 2 --//\r\n";
print '#index of: string1 = '.array_search('string1',array_keys($array))."\r\n";
print '#index of: string2 = '.array_search('string2',array_keys($array))."\r\n";
print '#index of: string3 = '.array_search('string3',array_keys($array))."\r\n";
// 재귀 적으로
print "\r\n//-- Method 3 --//\r\n";
foreach(array_keys($array) as $key => $value){
print '#index of: '.$value.' = '.$key."\r\n";
}
// 출력
//-- Method 1 --//
#index of: string1 = 0
#index of: string2 = 1
#index of: string3 = 2
//-- Method 2 --//
#index of: string1 = 0
#index of: string2 = 1
#index of: string3 = 2
//-- Method 3 --//
#index of: string1 = 0
#index of: string2 = 1
#index of: string3 = 2
문제는 배열에 숫자 인덱스가 없다는 것입니다.
array_values ()를 사용하면 인덱스가 0 인 배열이 생성되고 for 루프를 사용할 필요없이 array_search ()를 사용하여 검색 할 수 있습니다.
$list = array('string1', 'string2', 'string3');
$index = array_search('string2',array_values($list));
좀 더 구체적으로 말씀해 주시겠습니까?
$key = array_search('string2',$list)
나를 위해 잘 작동합니다. 좀 더 복잡한 것을 성취하려고하십니까?
This code should do the same as your new routine, working with the correct multi-dimensional array..
$arr = array(
'string1' => array('a' => '', 'b' => '', 'c' => ''),
'string2' => array('a' => '', 'b' => '', 'c' => ''),
'string3' => array('a' => '', 'b' => '', 'c' => '')
);
echo 'Index of "string2" = '. array_search('string2', array_keys($arr));
Try the array_keys PHP function.
$key_string1 = array_keys($list, 'string1');
array_search should work fine, just tested this and it returns the keys as expected:
$list = array('string1', 'string2', 'string3');
echo "Key = ".array_search('string1', $list);
echo " Key = ".array_search('string2', $list);
echo " Key = ".array_search('string3', $list);
Or for the index, you could use
$list = array('string1', 'string2', 'string3');
echo "Index = ".array_search('string1', array_merge($list));
echo " Index = ".array_search('string2', array_merge($list));
echo " Index = ".array_search('string3', array_merge($list));
$find="Topsite";
$list=array("Tope","Ajayi","Topsite","Infotech");
$list_count=count($list);
sort($list);
for($i=0;$i<$list_count;$i++)
{
if($list[$i]==$find){
$position=$i;
}
}
echo $position;
You'll have to create a function for this. I don't think there is any built-in function for that purpose. All PHP arrays are associative by default. So, if you are unsure about their keys, here is the code:
<?php
$given_array = array('Monday' => 'boring',
'Friday' => 'yay',
'boring',
'Sunday' => 'fun',
7 => 'boring',
'Saturday' => 'yay fun',
'Wednesday' => 'boring',
'my life' => 'boring');
$repeating_value = "boring";
function array_value_positions($array, $value){
$index = 0;
$value_array = array();
foreach($array as $v){
if($value == $v){
$value_array[$index] = $value;
}
$index++;
}
return $value_array;
}
$value_array = array_value_positions($given_array, $repeating_value);
$result = "The value '$value_array[0]' was found at these indices in the given array: ";
$key_string = implode(', ',array_keys($value_array));
echo $result . $key_string . "\n";//Output: The value 'boring' was found at these indices in the given array: 0, 2, 4, 6, 7
참고URL : https://stackoverflow.com/questions/2959222/get-the-index-value-of-an-array-in-php
'program tip' 카테고리의 다른 글
UIWebView에서 사용자 에이전트 변경 (0) | 2020.11.10 |
---|---|
임시 테이블에서 필드 이름을 검색하는 방법 (SQL Server 2008) (0) | 2020.11.10 |
NSMutableArray addObject :-[__ NSArrayI addObject :] : 인식 할 수없는 선택기가 인스턴스로 전송되었습니다. (0) | 2020.11.10 |
정말 '최종'블록이 필요합니까? (0) | 2020.11.10 |
이전에 추정 된 값으로 혼합 효과 모델 추정을 다시 시작합니다. (0) | 2020.11.09 |