2014-09-16 13 views
5
  • muszę stworzyć markę na terenie eCommerce.
  • muszę rozwiązanie, które daje mi pierwszy znak z tablicy.
  • Próbowałem trochę kodu, ale to nie było tak użyteczne.
  • muszę marki jak wspomniałem poniżej.

jakjak zdobyć pierwszego znaku z tablicy w php

A    
Alpha 
Aloo 
Amakeaviral 

B 
Boki 
Bone 

moich danych pochodzących z bazy danych w tablicy. Potrzebuję pierwszego znaku z tablicy.

Próbowałem:

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone"); 

for($i = 0; $i <= count($my_array); $i++){ 
    $first_char = $my_array[$i]{0}; 
    echo $first_char; 
} 

ale to nie działa dobrze. Jak mogę to zrobić?

+0

powinieneś użyć '$ my_array [$ i] [0]'. Również twoja pętla jest błędna, powinna być '$ i bansi

Odpowiedz

2

nadzieję, że będzie pracować dla Ciebie -

$my_array = array("Alpha","Aloo","Amakeaviral","Boki","Bone"); 
$newArray = array(); 
foreach($my_array as $value) { 
    $first_char = $value[0]; 
    if (!empty($newArray)) { 
     $flag = false; 
     foreach ($newArray as $key => $val) { 
      if ($first_char == $key){ 
       $newArray[$key][] = $value; 
       $flag = true; 
      } 
     } 
     if (!$flag) { 
      $newArray[$first_char][] = $first_char; 
      $newArray[$first_char][] = $value; 
     } 
    } else { 
     $newArray[$first_char][] = $first_char; 
     $newArray[$first_char][] = $value; 
    } 
} 
var_dump($newArray); 

samo jak powyżej, ale skróconego kodu:

$my_array = array("Alpha","Aloo","Amakeaviral","Boki","Bone"); 
$newArray = array(); 
foreach($my_array as $value) { 
    if (empty($newArray[$value[0]])){ 
     $newArray[$value[0]][]=$value[0]; 
    } 
    $newArray[$value[0]][] = $value; 
} 
var_dump($newArray); 
+1

omg tak dużo kodu? Wypróbuj 'foreach ($ my_array jako wartość $) { if (empty ($ newArray [wartość $ [0]])) { $ newArray [wartość $ [0]] [] = wartość $ [0]; } $ newArray [wartość $ [0]] [] = wartość $; } 'dla tego samego efektu! – bansi

+0

@bansi nadzieję, że możesz zrobić to, co jest potrzebne w znacznie mniej kodu i dodać odpowiedź. Nie mogłem. –

+0

Mogę dodać skróconą wersję do tej odpowiedzi – bansi

7

Spróbuj z substr() jako po prostu krótkim

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone"); 
foreach($my_array as $v){ 
    echo substr($v, 0, 1); 
} 

lub kod: - usunąć = z pętli <= (inaczej dostaniesz powiadomień) i używać [] raczej {}

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone"); 
for($i=0; $i < count($my_array); $i++){ 
    $first_char = $my_array[$i][0]; 
    echo $first_char; 
} 
2

Zasadniczo, każdy ciąg jest tablicą i można do niej uzyskać dostęp:

$str = 'This is a string'; 
echo $str[0]; // Output: T 
echo $str[1]; // Output: h 
echo $str[2]; // Output: i 

Wystarczy zmienić:

$first_char = $my_array[$i]{0}; 

w tym:

$first_char = $my_array[$i][0]; 
3

substr

Znalezienie pierwszego znaku

substr("Hello", 0, 1); //output "H" 

Spróbuj:

$first_char = substr($my_array[$i], 0, 1); 

Pełny kod:

for($i = 0; $i < count($my_array); $i++){ 
    echo $first_char = substr($my_array[$i], 0, 1); 
} 

Uwaga: $i <= count($my_array) powinny być $i < count($my_array)

Live DEMO

1

Spróbuj tego:

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone"); 

for($i = 0; $i < count($my_array); $i++){ 
    $first_char = $my_array[$i][0]; 
    echo $first_char; 
} 
+1

<= otrzymasz niezdefiniowane ogłoszenie indeksowe? –

+0

dzięki @RakeshSharma –

+0

czy możesz mi powiedzieć, co zrobiłeś w kodzie @theghostofc –

1

Spróbuj

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone"); 
foreach($my_array as $v){ 
    echo $v[0]; 
} 
0

wiem, że to jest nieco stary Przykro mi, ale to jest, jak to zrobiłem z tablicą obiektów. Chciałem wyświetlić tytuł każdego obiektu na alfabetycznej stronie. Użyłem następujących czynności:

$items = array 
(
[0] => stdClass Object 
    (
     [title] => Alpha 
     [name] => Joe Blogs 
     [address] => 123 Harry Street 
    ) 

[1] => stdClass Object 
    (
     [title] => Bravo 
     [name] => Jane Doe 
     [address] => 456 Upton Street 
    ) 

[2] => stdClass Object 
    (
     [title] => Charlie 
     [name] => Jane Doe 
     [address] => 456 Upton Street 
    ) 

) 

Następnie ogłosił tę funkcję w klasie pomocnika

public static function alphaSortItems ($items) { 
     $sortedItems = array(); 
     foreach ($items as $item) { 
      $sortedItems[$item->title[0]][] = $item; 
     } 
     return $sortedItems; 
    } 

Potem je wyświetlić użyłem

<?php $sortedItems = Helper::alphaSortItems($this->items); ?> 
     <?php foreach ($sortedItems as $key => $value) : ?> 
      <h2><?php echo $key; ?></h2> 
      <?php foreach ($value as $item) : ?> 
       <h3><?php echo $item->title; ?></h3> 
      <?php endforeach; ?> 
     <?php endforeach; ?> 

to jak zrobiłem to w każdym razie :-)

Powiązane problemy